ANTLR4 Java 用于重复标记的插件正则表达式

ANTLR4 Java plugin RegEx for duplicate tokens

我正在用 ANTLR4 编写语法,并希望为可以是 int 或 float 的方程制定规则,但不能是两者的混合。到目前为止我有:

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

我找到了正则表达式 'cheat sheet' here。此页面声明“\1”表示它应该具有与组 1 相同的内容。

但是,当我用 Antlr 尝试这个时,它不起作用。这是我使用的:

equation: (INT|FLOAT) OPERATOR '';

那么有谁知道我可以检查第 2 组是否与第 1 组相同的标记的方法?

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

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

混合float/int操作将无法识别。如果不需要在两种类型的方程之间进行分析树区分,请删除备用标签。