0

次のルールの文法があります->動詞と動詞には3つのトークン値があります get、put change 以下を参照してください。3 つ以上の動詞 (get、put、および change) を含むファイルを読み取る場合、パーサーにエラー メッセージを出力させたいと思います。これをリスナーに埋め込むのが最善でしょうか、それとも文法内で行うためのきちんとした方法はありますか?

たとえば、動詞内のトークン値をカウントする方法はありますか?

    verb    : 
       GET    |   
       PUT    |   
       CHANGE    ;
4

1 に答える 1

0

ご質問の内容が理解できれば、入力できる動詞は 3 つまでに制限されます。それはちょっと安っぽく、うまくスケーリングしませんが、何をしようとしているかによってはうまくいくかもしれません:

grammar Verb;

verb
 : option option? option? EOF
 ;

option
 : GET
 | PUT
 | CHANGE
 ;

GET    : 'get';
PUT    : 'put';
CHANGE : 'change';

SPACE
 : [ \t\r\n] -> skip
 ;

より一般的な目的が必要な場合は、この SO の回答を確認してください: ANTLR では、いくつかの一連のルールのすべての順列の代替を表現するためのショートカット表記法はありますか? 述語の使用。ただし、ANTLR 3用に作成されました。

于 2013-09-20T03:41:48.430 に答える