You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ANTLR报line 1:12换行符识别错误,基于自定义ST语法求解

问题解决:ANTLR token识别错误('\n'未被跳过)

错误原因

你的WS(空白字符)规则里误用了HTML实体->,而ANTLR语法要求使用原生的->箭头符号。这个错误导致WS规则无法被正确解析,换行符(\n)没有被跳过,进而触发token识别错误。

修复方案

将WS规则中的->替换为->,修改后的WS规则如下:

WS: [ \t\r\n]+ -> skip;

完整修复后的语法

grammar ST;

program: statement+;

statement: assignment ';'
         | ifStatement
         | whileStatement
         | forStatement
         | functionCall ';';

assignment: IDENTIFIER ':=' expression;

ifStatement: 'IF' condition 'THEN' statement+ ('ELSE' statement+)? 'END_IF';

whileStatement: 'WHILE' condition 'DO' statement+ 'END_WHILE';

forStatement: 'FOR' IDENTIFIER ':=' expression 'TO' expression 'DO' statement+ 'END_FOR';

functionCall: IDENTIFIER '(' argumentList? ')';

argumentList: expression (',' expression)*;

expression: literal
          | IDENTIFIER
          | '(' expression ')'
          | expression operator expression;

condition: expression;

literal: INT | BOOL;

operator: '+' | '-' | '*' | '/' | '=' | '<' | '>';

IDENTIFIER: [a-zA-Z_][a-zA-Z0-9_]*;
INT: [0-9]+;
BOOL: 'TRUE' | 'FALSE';
WS: [ \t\r\n]+ -> skip;

验证说明

修改完成后,ANTLR会正确识别并跳过所有空白字符(空格、制表符、回车、换行),你的测试代码就能正常解析,不会再出现token recognition error at: '\n'的错误。

内容的提问来源于stack exchange,提问作者Eljah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:55:01