Antlr 在比较中求解相互递归性

Antlr 在比较中求解相互递归性,antlr,Antlr,在这种情况下,如何解决相互递归性 value : comparison | 'A' | 'B' | 'C'; comparison : value comparison_operator value; 修正如下: atom : variable | literal | call | constructor | (PARAM_START comparison PARAM_END); comparison : (atom comparison_operator atom); value :

在这种情况下,如何解决相互递归性

value : comparison | 'A' | 'B' | 'C';

comparison : value comparison_operator value;
修正如下:

atom : variable | literal | call | constructor | (PARAM_START comparison PARAM_END);

comparison : (atom comparison_operator atom);

value : atom | comparison;

好吧,问题是它的含混不清。对于像
abc
这样的输入,如果
符合比较运算符规则,您希望它做什么?如果您想要与A(B C)等效的代码,那么它非常简单:

primary: 'A' | 'B' | 'C';
comparison: primary | primary comparison_operator comparison;
value: comparison;
如果你想要别的东西,它会变得更复杂