当前位置: 首页 > 知识库问答 >
问题:

ANTLR4:为什么'tree'不能作为规则名使用?

倪举
2023-03-14

如果我保存语法

grammar L;

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

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

共有1个答案

林德惠
2023-03-14

tree是ANTLR V3中的保留关键字。我想文档可能是不完整的,也可能是一个bug。文档中还提到了不能用作规则名称的非关键字(比如rule),因此tree可能与此类似--并不是真正的关键字,但在任何地方都不允许使用。

根据这个未解决的ANTRL4 bug报告,如果您删除:之间的空格,它就可以工作。

 类似资料:
  • 我正在使用antlr4 c语法作为我自己语法的灵感。我来了一件事,我真的不明白。为什么没有使用数据类型时会有Lexer规则?例如,规则从未使用过,但分析器规则(为了简化已删除其他数据类型)使用了好几个地方。解析器规则typeSpecifier没有使用lexer规则double有什么原因吗?

  • 问题内容: 我有一个嵌套的flexbox布局(使用bootstrapv4),可根据横向/纵向模式更改方向。第一层(由flexbox使用该属性放置)包含5个用作按钮的图标。我无法在这些图标上正常使用该属性。 如果我不使用属性,则图标将按照自然顺序进行布局;但是,如果我尝试使用该属性对其进行布局,则无法正常工作。在代码中,()应该是最后一个元素。不是。我可以通过更改源中的顺序来获得所需的顺序。但是,我

  • 声明这样的对象时: 它抛出以下错误: 但是,使用任何其他变量名(例如,)都可以正常工作。为什么?

  • 我正在编写一个解析器来解析字符串,比如 antlr4语法文件如下所示: 如果我把def加回来,就会出现错误: 属性:1:0:不匹配 输入“aaa.bb”应为ATTR_ID 注意:如果输入字符串为:则可以工作

  • 问题内容: 这不会执行: 错误消息是: 11-23 11:05:05.298:错误/数据库(31335):准备’创建表TestTable(名称文本,年龄整数,主键(ROWID))’时,0x2ab378上的故障1(表TestTable没有名为ROWID的列)。 但是,在创建TestTable之后,这可以准备并执行: 我可能将其视为需要自动递增主键和外​​键的解决方案,这些主键和外键永远不会用作应用程

  • 我有一个非常简单的语法,如下所示: (我需要使用语义谓词,因为我需要解析关键字可以用作标识符的语言)。 参考:https://github.com/antlr/antlr4/blob/master/doc/predicates.md