antlr4 不按语法解析

antlr4 not parsing according to grammar

我正在尝试根据此(部分)语法解析 'for loop':

grammar GaleugParserNew;

/*
 * PARSER RULES
 */

relational 
: '>'
| '<'
;

varChange
: '++'
| '--'
;

values
: ID
| DIGIT
;

for_stat
: FOR '(' ID '=' values ';' values relational values ';' ID varChange ')' '{' '}'  
;

/*
 * LEXER RULES
 */

 FOR    : 'for' ;

 ID     : [a-zA-Z_] [a-zA-Z_0-9]* ;
 DIGIT  : [0-9]+ ;

 SPACE  : [ \t\r\n] -> skip ;

当我尝试生成有关其解析方式的 gui 时,它不遵循我上面提供的语法。这是它产生的结果:

我以前遇到过这个问题,当时我只是简单地退出cmd,再次打开它并编译所有内容,然后以某种方式工作。它现在不工作了。

我对 antlr4 不是很了解,所以我不确定去哪里解决这个问题。

一定是你用的IDE有问题。语法很好并在 Visual Studio 代码中生成此解析树:

我猜 IDE 使用了错误的解析器或词法分析器(可能来自不同的工作文件?)。打印词法分析器标记以查看它们是否符合您的预期。提示:避免定义隐式词法分析器标记(如“(”、“}”等),这将允许为标记提供好名字。