如何识别 Antlr 语法中的行首?

How to recognise start-of-line in an Antlr grammar?

提问人:wolandscat 提问时间:10/1/2015 最后编辑:bfontainewolandscat 更新时间:1/7/2019 访问量:3132

问:

在我使用的语言中,某些关键字必须位于行的开头。这主要是因为语言中的字符串值可以跨越多行,而字符串可以很容易地包含这些关键字。

我可以轻松处理旧的 yacc/lex 语法实现,因为词法分析器使用普通的正则表达式来匹配文本模式,例如

^description    { actions }

匹配行首的 '',然后执行操作。description

如何在 Antlr4 中执行此操作?它似乎不支持词法匹配的正确正则表达式。我正在使用 IntelliJ 插件,当我在任何词法分析器规则 RHS 上使用 '' 字符时,它会抱怨。^

正则表达式 IntelliJ-IDEA ANTLR4

评论

3赞 GRosenberg 10/1/2015
这回答了你的问题吗?
2赞 GRosenberg 10/1/2015
也就是说,使用 .DescKeyWord : BOL [ \t]* 'description' ;
0赞 wolandscat 2/4/2016
是的,这也是我得出的结论,尽管您用实际的 BOL 代币将其形式化。
0赞 General Grievance 9/30/2021
这回答了你的问题吗?如何检测行的开头,或:“名称'getCharPositionInLine'在当前上下文中不存在”

答: 暂无答案