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

如何在Antlr4 Lexer中匹配[BOF](文件开头)的行首注释?

Antlr4 行首注释(含文件开头)的语法实现

要让注释规则既能匹配换行后的行首注释,也能匹配文件开头(BOF)的行首注释,只需修改COMMENT词法规则的起始匹配条件,加入对输入开始位置的支持:

修改后的完整语法代码:

grammar com;

comment: COMMENT;

COMMENT
 : ( '\n' | ^ ) '//' .*? '\n'
 ;

规则说明

  • ^ 在Antlr4的词法规则中代表输入的起始位置(BOF),和'\n'组成分支后,就允许注释出现在文件开头或者换行后的行首,完全符合“注释必须位于行首”的要求
  • .*? 是非贪婪匹配,确保只匹配到当前行的换行符为止,不会跨多行匹配注释

如果需要支持文件末尾的注释(即注释后没有换行符,比如文件最后一行是// end of file),可以把规则末尾的'\n'替换为( '\n' | $ ),其中$代表输入结束位置(EOF),修改后的规则如下:

COMMENT
 : ( '\n' | ^ ) '//' .*? ( '\n' | $ )
 ;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:15:35