控制令牌减少

时间:2012-10-25 07:35:17

标签: antlr grammar antlrworks reduce-reduce-conflict

有没有办法在运行时使用ANTLR控制令牌的缩减操作。 例如,我有一个ANTLR语法,如下所示:

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

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

1 个答案:

答案 0 :(得分:1)

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

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