我总是在解析规则警告时获得隐式声明,当编译antlrworks 2中的antlr v4中的所有示例时,我的简单规则如下:
type
: 'Integer'
| 'Character'
| 'Real'
| 'String'
| 'Short'
| 'Long'
| 'Double'
| 'Signed'
| 'Unsigned'
| 'Boolean'
| structTag
| enumTag
| declarator
;
任何人都可以给我解决方案警告,例如上面的解决方案。 谢谢
答案 0 :(得分:1)
警告是通知您,您无法在代码中知道您的type
是否为标识符,字符,真实等,因为您尚未将命名令牌类型分配给相应的令牌。您可以通过为每个令牌创建命名词法分析器规则来解决此警告:
INTEGER : 'Integer';
CHARACTER : 'Character';
添加这些新定义后,您不必更改type
规则,但添加定义后,您将能够检查令牌类型是INTEGER
还是CHARACTER
解析器结果处理代码的一部分。