Methods Summary |
---|
public void | addExceptionSpec(persistence.antlr.ExceptionSpec ex)
if (findExceptionSpec(ex.label) != null) {
if (ex.label != null) {
grammar.antlrTool.error("Rule '" + ruleName + "' already has an exception handler for label: " + ex.label);
}
else {
grammar.antlrTool.error("Rule '" + ruleName + "' already has an exception handler");
}
}
else {
exceptionSpecs.put((ex.label == null ? "" : ex.label.getText()), ex);
}
|
public persistence.antlr.ExceptionSpec | findExceptionSpec(persistence.antlr.Token label)
return (ExceptionSpec)exceptionSpecs.get(label == null ? "" : label.getText());
|
public persistence.antlr.ExceptionSpec | findExceptionSpec(java.lang.String label)
return (ExceptionSpec)exceptionSpecs.get(label == null ? "" : label);
|
public void | generate()
grammar.generator.gen(this);
|
public boolean | getDefaultErrorHandler()
return defaultErrorHandler;
|
public persistence.antlr.RuleEndElement | getEndElement()
return endNode;
|
public java.lang.String | getIgnoreRule()
return ignoreRule;
|
public java.lang.String | getRuleName()
return ruleName;
|
public boolean | getTestLiterals()
return testLiterals;
|
public boolean | isLexerAutoGenRule()
return ruleName.equals("nextToken");
|
public persistence.antlr.Lookahead | look(int k)
return grammar.theLLkAnalyzer.look(k, this);
|
public void | prepareForAnalysis()
super.prepareForAnalysis();
lock = new boolean[grammar.maxk + 1];
|
public void | setDefaultErrorHandler(boolean value)
defaultErrorHandler = value;
|
public void | setEndElement(persistence.antlr.RuleEndElement re)
endNode = re;
|
public void | setOption(persistence.antlr.Token key, persistence.antlr.Token value)
if (key.getText().equals("defaultErrorHandler")) {
if (value.getText().equals("true")) {
defaultErrorHandler = true;
}
else if (value.getText().equals("false")) {
defaultErrorHandler = false;
}
else {
grammar.antlrTool.error("Value for defaultErrorHandler must be true or false", grammar.getFilename(), key.getLine(), key.getColumn());
}
}
else if (key.getText().equals("testLiterals")) {
if (!(grammar instanceof LexerGrammar)) {
grammar.antlrTool.error("testLiterals option only valid for lexer rules", grammar.getFilename(), key.getLine(), key.getColumn());
}
else {
if (value.getText().equals("true")) {
testLiterals = true;
}
else if (value.getText().equals("false")) {
testLiterals = false;
}
else {
grammar.antlrTool.error("Value for testLiterals must be true or false", grammar.getFilename(), key.getLine(), key.getColumn());
}
}
}
else if (key.getText().equals("ignore")) {
if (!(grammar instanceof LexerGrammar)) {
grammar.antlrTool.error("ignore option only valid for lexer rules", grammar.getFilename(), key.getLine(), key.getColumn());
}
else {
ignoreRule = value.getText();
}
}
else if (key.getText().equals("paraphrase")) {
if (!(grammar instanceof LexerGrammar)) {
grammar.antlrTool.error("paraphrase option only valid for lexer rules", grammar.getFilename(), key.getLine(), key.getColumn());
}
else {
// find token def associated with this rule
TokenSymbol ts = grammar.tokenManager.getTokenSymbol(ruleName);
if (ts == null) {
grammar.antlrTool.panic("cannot find token associated with rule " + ruleName);
}
ts.setParaphrase(value.getText());
}
}
else if (key.getText().equals("generateAmbigWarnings")) {
if (value.getText().equals("true")) {
generateAmbigWarnings = true;
}
else if (value.getText().equals("false")) {
generateAmbigWarnings = false;
}
else {
grammar.antlrTool.error("Value for generateAmbigWarnings must be true or false", grammar.getFilename(), key.getLine(), key.getColumn());
}
}
else {
grammar.antlrTool.error("Invalid rule option: " + key.getText(), grammar.getFilename(), key.getLine(), key.getColumn());
}
|
public java.lang.String | toString()
String s = " FOLLOW={";
Lookahead cache[] = endNode.cache;
int k = grammar.maxk;
boolean allNull = true;
for (int j = 1; j <= k; j++) {
if (cache[j] == null) continue;
s += cache[j].toString(",", grammar.tokenManager.getVocabulary());
allNull = false;
if (j < k && cache[j + 1] != null) s += ";";
}
s += "}";
if (allNull) s = "";
return ruleName + ": " + super.toString() + " ;" + s;
|