1

私はいわゆる定義を使用します

message : '"'.* '"';

「」内のすべての小さなものを表すのはメッセージ、ターミナルです。「lkjaldjfa kajf」とうまく機能しますが、「\n」に出会うと悪夢に変わります-無限ループを引き起こし、私の記憶を食い尽くします.

理由がわかりません..ありがとう

4

1 に答える 1

1

... それは悪夢に変わります -- 無限ループを引き起こし、私の記憶を食い尽くします。

それを再現することができずにそれについてコメントするのは難しい.

ただし、パーサールールは次のとおりです。

message : '"' .* '"';

tokenで終わる0 個以上の他のトークンが続くtoken 一致します'"' '"'

パーサー ルールとして保持する非常に正当な理由がない限り (それを聞きたいのですが)、レクサールールに変更します。

Message : '"' .* '"';

これは、文字 '"'の後にゼロ個以上の他の文字が続き、その文字で終わる文字 に一致します'"'


参照: ANTLR のパーサー ルールとレクサー ルールの実際的な違いは?

于 2012-12-13T07:34:41.190 に答える