Для question и грамматики, предложенной @BartKiers (спасибо!), Я добавил options
блок, чтобы определить выход бытьСоздание AST из ANTLR грамматики
options{
language=Java;
output=AST;
ASTLabelType=CommonTree;
}
Однако, я не в состоянии фигуры как получить доступ к выходу, т.е. AST
. Мне нужно пройти через дерево и обработать каждую операцию, указанную во входе.
Используя ваш пример here, я пытаюсь реализовать правила, возвращающие значения. Тем не менее, я бегу в следующие ошибки:
relational returns [String val]
: STRINGVALUE ((operator)^ term)?
{val = $STRINGVALUE.text + $operator.text + $term.text; }
;
term returns [String rhsOperand]
: QUOTEDSTRINGVALUE {rhsOperand = $QUOTEDSTRINGVALUE.text;}
| NUMBERVALUE {rhsOperand = $NUMBERVALUE.text; }
| '(' condition ')'
;
Ошибка компиляции:
Checking Grammar RuleGrammarParser.g...
\output\RuleGrammarParser.java:495: cannot find symbol
symbol : variable val
location: class RuleGrammarParser
val = (STRINGVALUE7!=null?STRINGVALUE7.getText():null) + (operator8!=null?input.toString(operator8.start,operator8.stop):null) + (term9!=null?input.toString(term9.start,term9.stop):null);
^
\output\RuleGrammarParser.java:612: cannot find symbol
symbol : variable rhsOperand
location: class RuleGrammarParser
rhsOperand = (QUOTEDSTRINGVALUE10!=null?QUOTEDSTRINGVALUE10.getText():null);
^
\output\RuleGrammarParser.java:632: cannot find symbol
symbol : variable rhsOperand
location: class RuleGrammarParser
rhsOperand = (NUMBERVALUE11!=null?NUMBERVALUE11.getText():null);
^
3 errors
Можете ли вы помочь мне понять, почему это не в компилятор?
Добавлена Pastebin: http://pastebin.com/u1Bv3L0A
Добро пожаловать в темноту. –