0

有没有办法在运行时用 ANTLR 控制令牌的减少操作。例如,我有一个 ANTLR 语法,它看起来像:

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

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

4

1 回答 1

1

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

s:
   {someBoolFunction();}? a
 | b
;
a: WORD;
b: WORD;
WORD: ('a'..'z')+
于 2012-10-27T16:55:29.237 回答