0

私はANTLRの初心者であり、それを使用してあいまいな言語のパーサーを開発しています。私がやりたいのは、ASTを使用せずに「コメント」の周りのトークンを1つのトークンに結合する方法です。

この簡単な文法を使用して問題を説明しています

grammar test;

query   
    :     expression+   
    ;

expression
    :   alpha 
    ;


alpha
    : ID
    ;


ID  :   ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
    ;


COMMENT
    :   '{' ( options {greedy=false;} : . )* '}' {$channel=HIDDEN;}
    ;

単純なテキスト「Test{Comments}er」で実行すると、「Test」と「er」という 2 つの別個のトークンが生成されます。それから単一のトークンを作成したい間。どんな助けでも大歓迎です。

前もって感謝します

ジム

4

1 に答える 1

0

よくわかりませんが、次のようなことを試みましたか?

 ID  :   ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* COMMENT? ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* 
;
于 2012-04-25T10:59:50.420 に答える