我读的URL(和试图复制)和失败...(对ANTLR太大文章)...如何解决这个简单的ANTLR recusive问题
https://supportweb.cs.bham.ac.uk/docs/tutorials/docsystem/build/tutorials/antlr/antlr.html
我的解决办法之前,我加括号的东西
whereClause: WHERE expression -> ^(WHERE_CLAUSE expression);
expression: orExpr;
orExpr: andExpr (OR^ andExpr)*;
andExpr: primaryExpr (AND^ primaryExpr)*;
primaryExpr: parameterExpr | inExpr | compExpr;
我的解决方案,由于未能无限递归(但我认为LPAREN ^和RPAREN!那里应该解决???)....
whereClause: WHERE^ (expression | orExpr);
expression: LPAREN^ orExpr RPAREN!;
orExpr: andExpr (OR^ andExpr)*;
andExpr: primaryExpr (AND^ primaryExpr)*;
primaryExpr: parameterExpr | inExpr | compExpr | expression;
注意底部的primaryExpr表达式已添加了LPAREN和RPAREN,但WHERE可以是一个orExpr或表达式(即。第一个表达式可以使用或不使用parens)。
我相信这可能是一个简单的问题,像我一直盯着几个小时或一些东西的dang typo。 感谢, 院长