Antlr 控制令牌减少

Antlr 控制令牌减少,antlr,grammar,antlrworks,reduce-reduce-conflict,Antlr,Grammar,Antlrworks,Reduce Reduce Conflict,是否有一种方法可以在运行时使用ANTLR控制令牌的缩减操作。 例如,我有一个ANTLR语法,它看起来像: s: ( a | b); a: WORD; b: WORD; WORD: ('a'..'z')+ 其中,与“a”和“b”相关的确切可能值在运行时已知,即,我想在运行时决定是否将单词缩减为“a”或“b”。使用语义谓词。除非您计划将操作添加到规则a和b中,否则此示例不会特别有用 s: {someBoolFunction();}? a | b ; a: WORD; b: WORD; WO

是否有一种方法可以在运行时使用ANTLR控制令牌的缩减操作。 例如,我有一个ANTLR语法,它看起来像:

s: ( a | b);
a: WORD;
b: WORD;
WORD: ('a'..'z')+

其中,与“a”和“b”相关的确切可能值在运行时已知,即,我想在运行时决定是否将单词缩减为“a”或“b”。

使用语义谓词。除非您计划将操作添加到规则a和b中,否则此示例不会特别有用

s:
   {someBoolFunction();}? a
 | b
;
a: WORD;
b: WORD;
WORD: ('a'..'z')+

对不起,这语法不行。你能更具体地解释一下,你到底想要实现什么?可能是一些例子……我知道有一个reduce-reduce冲突,但我正在寻找一种在运行时解决这个冲突的方法。我有一个单词表,可以简化为“a”到“b”,但这次是在运行时填写的。嘿,这就是我要找的。谢谢