代码之家  ›  专栏  ›  技术社区  ›  Andrey Tyukin

antlr4:为什么“tree”不能用作规则名?

  •  1
  • Andrey Tyukin  · 技术社区  · 7 年前

    如果我保存语法

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

    在文件名中 L.g4 并调用 antlr4 L.g4

    L.g4:::语法错误:字符“|”不匹配,应为“g”

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

    如果我把钱存起来

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

    作为 L.g4级 然后跑 antlr4 在它上面,它运行没有错误。

    这辆车怎么了 tree 标识符?它不在名单上 reserved keywords

    import,fragment,lexer,parser,grammar,returns, 局部变量,抛出,捕获,最后,模式,选项,标记

    1 回复  |  直到 7 年前
        1
  •  1
  •   kapex    7 年前

    tree 是一个 reserved keyword in ANTLR v3 rule ),所以有可能 是相似的-不是一个真正的关键字,但不允许无处不在。

    根据这个 unresolved ANTRL4 bug report for your issue :