ANTLR

2011-08-17 9 views
-1
以外のすべてのトークンの照合

特定のものを除いて、antlrのトークンと一致する方法はありますか?ANTLR

私は'_'がIDであることができるという規則を持っています。今私はIDと照合したい特定の状況がありますが、この特定のケースでは'_'代替案を無視したいと思います。出来ますか?

+3

あなたの質問を少し閲覧したが、多くはまともな回答があるようだが、ほとんどは受け入れられなかった。あなたは_do_あなたの質問にあなた自身の答えを好むようだ... :) –

+0

@halfwarp答えは受け入れられる資格がありますか?はいの場合はそれを受け入れてください。 –

答えて

1

私は(あなたがターゲット言語としてのJavaを使用している場合)

(ID {!$ID.text.equals("_")}?) 

のようなものがそれをやるべきだと思います。そうでなければ、semantic predicateをあなたの言語が理解できるように書く必要があります。

要するに、これはテキストが "_"と等しくないかどうかをチェックし、そのときにのみサブルールが一致するかどうかをチェックします。

これを行うためのもう一つの可能​​な方法:

id: ID 
    | '_' 
    ; 

ID: // lexer rule to match every valid identifier EXCEPT '_' ; 

そのように、あなたは「どちらか 『_』や他のID」、あなたが許可しない場合は、これに合わせて、idを使用し、「_」、あなたを意味するたびに_を使用できます。