私はANTLRに慣れていないので、次のことをしたいと思います。
以下の文法スニペットを考えると、多くのトークンの 1 つに一致する選択規則 *comparison_op* があります。私がやりたいのは、条件付きの書き換えルールを書くことです-たとえば、トークンがDOESNOTENDWITHの場合は何かを行い、DOESNOTCONTAINの場合は何かを行います.
私はこれを正しく理解できないようです。これを行うことさえ可能ですか?もちろん、条件ごとに特定のルールを書くこともできますが、それも最善の方法ではないようです。
助言がありますか?
{... snipped ...}
DOESNOTBEGINWITH : 'does not begin with';
DOESNOTENDWITH : 'does not end with';
DOESNOTCONTAIN : 'does not contain';
comparison_op : DOESNOTBEGINWITH | DOESNOTENDWITH | DOESNOTCONTAIN
condition_comparison : (column_name comparison_op v1=valueExpression)
-> {$comparison_op.text == $DOESNOTBEGINWITH.text}?
^(LIKE column_name $v1)
-> ^(comparison_op column_name $v1);