代码之家  ›  专栏  ›  技术社区  ›  Eishknaar

用于重复标记的ANTLR4 Java插件RegEx

  •  0
  • Eishknaar  · 技术社区  · 6 年前

    我正在用ANTLR4编写语法,希望得到一个可以是int或float,但不能同时是两者的规则。到目前为止,我已经:

    equation: (INT | FLOAT) OPERATION (INT | FLOAT);
    

    我找到了一个RegEx“备忘单” here . 此页声明“\1”表示它应该与组1具有相同的内容。

    然而,当我尝试使用Antlr时,它没有起作用。以下是我使用的:

    equation: (INT|FLOAT) OPERATOR '\1';
    

    那么,有人知道我可以用什么方法检查组2和组1是相同的标记吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   GRosenberg    6 年前

    Antltr处理这一问题的方法是直接指定可接受的内容:

    equation : FLOAT OPERATION FLOAT    #eqFloat
             | INT   OPERATION INT      #eqInt
             ;
    

    将无法识别混合浮点/整数操作。如果不需要对这两种类型的表达式进行解析树区分,请删除备用标签。