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

如何验证ANTLR词法分析器中词法Token的准确性?

ANTLR词法Token的高效验证方案

问题场景

我正在编写ANTLR语法,已经定义了全部词法Token,示例Lexer规则如下:

// TestLexer.g4
// 可解析 x+4+1.2
lexer grammar TestLexer;
VAR: [a-z]+;
PLUS: '+';
INT: [0-9]+;
DEC: [0-9]+ '.' [0-9]+;

实际项目里我有100多个复杂Token,在开发正式解析器前需要确保所有Token的识别准确性。之前我试过这样的验证方式:

program: TOKEN* EOF;
TOKEN: PLUS|INT|VAR|DEC;

但逐个维护TOKEN规则里的Token枚举太繁琐,想知道有没有更优的验证方法,比如TestRig工具的专属模式?

可行解决方案(来自Mike的解答)

直接使用ANTLR的TestRig(通过grun命令调用)的tokens模式,无需额外编写语法规则即可验证Lexer的Token识别结果,具体步骤:

  1. 生成Lexer代码:
$ antlr4 TestLexer.g4
  1. 编译生成的Java类文件:
$ javac TestLexer.java
  1. 启动Token验证模式并输入测试文本:
$ grun TestLexer tokens -tokens
x+1+1.2

执行后会输出每个Token的详细信息,包括位置、内容和对应的Token类型:

[@0,0:0='x',<VAR>,1:0]
[@1,1:1='+',<'+'>,1:1]
[@2,2:2='1',<INT>,1:2]
[@3,3:3='+',<'+'>,1:3]
[@4,4:6='1.2',<DEC>,1:4]
[@5,7:6='<EOF>',<EOF>,1:7]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:39:22