0

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

EXPRESSION      :    EXPRESSION BINARYOP EXPRESSION | UNARYOP EXPRESSION | NUMBER;

我需要为其添加括号,但我不确定如何使左括号依赖于匹配的右括号,但仍然是可选的。有人可以告诉我怎么做吗?(或者我在词法分析方面做得太多了,我应该把部分或全部留给解析吗?)

4

2 回答 2

1

您可以添加递归规则:

EXPRESSION      : EXPRESSION BINARYOP EXPRESSION
                | UNARYOP EXPRESSION
                | NUMBER
                | OPENPARENS EXPRESSION CLOSEPARENS
                ;
于 2009-12-10T03:52:57.870 回答
1

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

http://www.antlr.org/wiki/display/ANTLR3/Expression+evaluator(查看解析器规则如何expr渗透到规则中atom,然后atom再次递归调用)

高温高压

于 2009-12-10T10:02:04.877 回答