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 に答える