用于重复令牌的ANTLR4 Java插件RegEx

时间:2018-01-31 21:23:46

标签: java intellij-idea plugins antlr4

我正在ANTLR4中编写一个语法,并希望有一个规则可以是int或float,但不是两者的混合。到目前为止,我有:

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

我找到了RegEx'备忘单'here。此页面指出'\ 1'表示它应与组1具有相同的内容。

然而,当我用Antlr尝试这个时,它没有用。这是我使用的:

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

所以有人知道我可以检查第2组与第1组的标记相同吗?

1 个答案:

答案 0 :(得分:1)

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

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

无法识别混合的float / int操作。如果不需要在两种类型的等式之间区分解析树,则删除备用标签。