有没有办法在运行时使用ANTLR控制令牌的缩减操作。 例如,我有一个ANTLR语法,如下所示:
s: ( a | b);
a: WORD;
b: WORD;
WORD: ('a'..'z')+
在运行时已知与'a'和'b'相关的确切可能值,即我想在运行时决定是否将WORD缩减为'a'或'b'。
答案 0 :(得分:1)
使用语义谓词。除非您计划向规则a和b添加操作,否则此示例将不会特别有用。
s:
{someBoolFunction();}? a
| b
;
a: WORD;
b: WORD;
WORD: ('a'..'z')+