ANTLr4:为什么"树"不能用作规则名称?



如果我保存语法

grammar L;
tree: 't' ;
a: tree | 'b' ;

在文件名L.g4和调用antlr4 L.g4(版本 4.7.1(中,它会输出一条难以理解的错误消息,没有任何行号或列号:

L.g4::: 语法错误:字符"|"不匹配,预期为"g">

:::部分是错误的行号/列号通常所在的位置。

如果我改为保存

grammar L;
tre: 't' ;
a: tre | 'b' ;

L.g4并在其上运行antlr4时,它会运行而不会出错。

tree标识符有什么问题?它未列在保留关键字列表中:

导入、片段、词法分析器、解析器、语法、返回、 局部变量, 投掷, 接球, 最后, 模式, 选项, 令牌

tree是ANTLR v3中的保留关键字。我想文档可能不完整,也可能是一个错误。该文档还提到了不能用作规则名称的非关键字(如单词rule(,因此tree可能是相似的 - 不是真正的关键字,但并非在所有地方都允许。

根据针对您的问题的未解决的ANTRL4错误报告,如果您删除tree:之间的空格,它可以工作。

相关内容

  • 没有找到相关文章

最新更新