Java 如何在antlr中生成语法,null是终止条件?
我在antlr中返回此代码,但它不是终止标识符Java 如何在antlr中生成语法,null是终止条件?,java,antlr,Java,Antlr,我在antlr中返回此代码,但它不是终止标识符 如何解决此问题?标识符的语法规则没有终止。添加|'\r'?'\不遵守那条规则 e、 g 或者你可以试试 identifier : 'int' (ID|ID '=' INT) (','ID|','ID '=' INT)*';' '\n' identifier | 'float' (ID|ID '=' FLOAT) (','ID|','ID '=' FLOAT)*';' '\n' identifier | 'char' (I
如何解决此问题?标识符的语法规则没有终止。添加|'\r'?'\不遵守那条规则 e、 g 或者你可以试试
identifier
: 'int' (ID|ID '=' INT) (','ID|','ID '=' INT)*';' '\n' identifier
| 'float' (ID|ID '=' FLOAT) (','ID|','ID '=' FLOAT)*';' '\n' identifier
| 'char' (ID|ID '=' CHAR) (','ID|','ID '=' CHAR)*';' '\n' identifier
| 'string' (ID|ID '=' STRING) (','ID|','ID '=' STRING)*';' '\n' identifier
| '\r\n';
;
标识符的语法规则没有终止。添加|'\r'?'\n′;但标识符是递归的,所以它不能结束…它是无限的如何解决。。。
identifier
: 'int' (ID|ID '=' INT) (','ID|','ID '=' INT)*';' '\n' identifier
| 'float' (ID|ID '=' FLOAT) (','ID|','ID '=' FLOAT)*';' '\n' identifier
| 'char' (ID|ID '=' CHAR) (','ID|','ID '=' CHAR)*';' '\n' identifier
| 'string' (ID|ID '=' STRING) (','ID|','ID '=' STRING)*';' '\n' identifier
| '\r\n';
;
identifier
: 'int' (ID|ID '=' INT) (','ID|','ID '=' INT)*';' '\n' identifier
| 'float' (ID|ID '=' FLOAT) (','ID|','ID '=' FLOAT)*';' '\n' identifier
| 'char' (ID|ID '=' CHAR) (','ID|','ID '=' CHAR)*';' '\n' identifier
| 'string' (ID|ID '=' STRING) (','ID|','ID '=' STRING)*';' '\n' identifier
| EOF
;