我有一个左递归规则,如下所示:
EXPRESSION : EXPRESSION BINARYOP EXPRESSION | UNARYOP EXPRESSION | NUMBER;
我需要为其添加括号,但我不确定如何使左括号依赖于匹配的右括号,但仍然是可选的。有人可以告诉我怎么做吗?(或者我在词法分析方面做得太多了,我应该把部分或全部留给解析吗?)
我有一个左递归规则,如下所示:
EXPRESSION : EXPRESSION BINARYOP EXPRESSION | UNARYOP EXPRESSION | NUMBER;
我需要为其添加括号,但我不确定如何使左括号依赖于匹配的右括号,但仍然是可选的。有人可以告诉我怎么做吗?(或者我在词法分析方面做得太多了,我应该把部分或全部留给解析吗?)
您可以添加递归规则:
EXPRESSION : EXPRESSION BINARYOP EXPRESSION
| UNARYOP EXPRESSION
| NUMBER
| OPENPARENS EXPRESSION CLOSEPARENS
;
是的,你试图在词法分析器中做太多事情。以下是绕过左递归规则的方法:
http://www.antlr.org/wiki/display/ANTLR3/Expression+evaluator(查看解析器规则如何expr
渗透到规则中atom
,然后atom
再次递归调用)
高温高压