我讀的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。 感謝, 院長