我试图使用带有IDL.g4语法的antlr4来实现我们的idl文件应遵循的一些检查。关于名字的一条规则。规则如下:
执行此检查的一种方法是编写一个函数来检查这些属性的字符串,并在退出侦听器中为每个具有ID的规则调用它。例如,exitConst_decl()
,exitInit_decl()
,exitSimple_declarator()
以及更多地方的ID。(参见IDL.g4)。也许这是正确的方法。但我正在考虑将该检查直接放在词法元素ID
上。但是不知道该怎么做,或者根本不可能。
答案 0 :(得分:1)
在词法分析器中验证此类型的约束会使为无效标识符提供可用的错误消息变得更加困难。但是,您可以创建新的解析器规则identifier
,并将各种解析器规则中对ID
的所有引用替换为引用identifier
。
identifier
: ID
;
然后,您可以将标识符验证逻辑放在单个方法enterIdentifier
中,而不是当前引用ID
的所有各种规则。