0

私はANTLRを初めて使用し、コメントを解析するためのこのレクサールールを考え出しましたが、機能しますか?

COMMENT_LINE        :   (COMMENT (. - LINE_ENDING)* LINE_ENDING){$channel=hidden};

(ドキュメントでこのような構文に関するものは何も見つかりませんでした)

4

1 に答える 1

2

あなたのルールはまったくコンパイルされません。ANTLRWorks を使用して新しいレクサー文法を作成する場合、ボックスをオンにして、単一行のコメントに一致するレクサー ルールを生成することができます。それはこれを生成します:

COMMENT
    :   '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
    ;

または、次のようなものを使用して、1 行のコメントに一致させることもできます。

COMMENT_LINE 
    : COMMENT (options{greedy=false;}: .)* LINE_ENDING {$channel=HIDDEN;}
    ;
于 2009-12-09T08:42:34.717 に答える