我正在ANTLR4中编写一个语法,并希望有一个规则可以是int或float,但不是两者的混合。到目前为止,我有:
equation: (INT | FLOAT) OPERATION (INT | FLOAT);
我找到了RegEx'备忘单'here。此页面指出'\ 1'表示它应与组1具有相同的内容。
然而,当我用Antlr尝试这个时,它没有用。这是我使用的:
equation: (INT|FLOAT) OPERATOR '\1';
所以有人知道我可以检查第2组与第1组的标记相同吗?
答案 0 :(得分:1)
处理此问题的Antltr方法是直接指定可接受的内容:
equation : FLOAT OPERATION FLOAT #eqFloat
| INT OPERATION INT #eqInt
;
无法识别混合的float / int操作。如果不需要在两种类型的等式之间区分解析树,则删除备用标签。