如何在此规则中添加括号?

时间:2009-12-10 03:48:22

标签: antlr parentheses lexical-analysis

我有一个左递归规则,如下所示:

EXPRESSION      :    EXPRESSION BINARYOP EXPRESSION | UNARYOP EXPRESSION | NUMBER;

我需要为它添加括号,但我不确定如何使左括号依赖于匹配的右括号,但仍然是可选的。有人能告诉我怎么样? (或者我想在lexing中做太多,我应该将部分或全部内容留给解析吗?)

2 个答案:

答案 0 :(得分:1)

您可以添加递归规则:

EXPRESSION      : EXPRESSION BINARYOP EXPRESSION
                | UNARYOP EXPRESSION
                | NUMBER
                | OPENPARENS EXPRESSION CLOSEPARENS
                ;

答案 1 :(得分:1)

是的,你试图在词法分析器中做太多。以下是绕过左递归规则的方法:

http://www.antlr.org/wiki/display/ANTLR3/Expression+evaluator(请参阅解析器规则expr如何逐步归结到规则atom,然后再次从atom递归调用

HTH