V3からv4に切り替えることにした後、ANTLR 4の文法についてサポートが必要です。私はANTLRをあまり経験していませんので、私の質問がばかげていると本当に申し訳ありません;)
V3では、次のコードを使用してJavaスタイルのコメントを検出しました。
COMMENT
: '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
| '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
;
V4では、ルール固有のオプションはありません。アクション(非表示チャネルに移動)も無効です。
誰かがANTLRv4でそれを行う方法のヒントを教えてもらえますか?
V4に相当するものは次のようになります。
COMMENT
: ( '//' ~[\r\n]* '\r'? '\n'
| '/*' .*? '*/'
) -> channel(HIDDEN)
;
これにより、HIDDEN
チャネルにすべての単一行コメントと複数行コメントが配置されます。ただし、これらのHIDDEN
トークンを使用して何もしていない場合は、次のようにこれらのトークンをskip
することもできます。
COMMENT
: ( '//' ~[\r\n]* '\r'? '\n'
| '/*' .*? '*/'
) -> skip
;
レクサーまたはパーサーに貪欲に一致するように伝えるには、もうoptions {greedy=false;}
を使用せず、多くの正規表現実装と同様に?
を追加することに注意してください。