2

ANTLR でコメント一致ルールを作成しようとしていますが、現在は次のとおりです。

LINE_COMMENT
    : '--' (options{greedy=false;}: .)* NEWLINE {Skip();}
    ;

NEWLINE : '\r'|'\n'|'\r\n' {Skip();};

このコードは、コメントがファイルの最後の文字である場合を除いて正常に機能します。この場合、NoViableAlt 例外がスローされます。どうすればこれを修正できますか?

4

2 に答える 2

2

なぜだめですか:

LINE_COMMENT     : '--' (~ NEWLINE)* ;
fragment NEWLINE : '\r' '\n'? | '\n' ;

まだこれに遭遇していない場合、字句規則 (すべて大文字) は定数とトークンのみで構成でき、他の語彙素では構成できません。そのためのパーサー規則が必要です。

于 2010-02-14T11:43:29.290 に答える
0

私は行きます:

LINE_COMMENT
  :  '--' ~( '\r' | '\n' )* {Skip();}
  ;

NEWLINE 
  :  ( '\r'? '\n' | '\r' ) {Skip();}
  ;
于 2010-02-14T11:52:44.840 に答える