2

以下の文法では、 で始まる行を'1 行のコメントと の間の任意の行に設定しようとしています/' Multiline Comment '/。1 行のコメントは正常に機能します。しかし、何らかの理由で/または'または「;」を押すとすぐに または<'>' 以下のエラーが表示されます。上記の文字が設定されていません。それらはデフォルトと見なされ、解析をスキップするべきではありませんか?

エラー

Lexical error at line 0, column 0.  Encountered: "\"" (34), after : ""
Lexical error at line 0, column 0.  Encountered: ">" (62), after : ""
Lexical error at line 0, column 0.  Encountered: "\n" (10), after : "-"

簡潔にするために、以下のコードの一部のみを含めました。完全なレクサーの定義については、リンクにアクセスしてください

TOKEN :
{
  < WHITESPACE:
  " "
| "\t"
| "\n"
| "\r"
| "\f">
}

/* COMMENTS */

MORE :
{
  <"/'"> { input_stream.backup(1); } : IN_MULTI_LINE_COMMENT
}

<IN_MULTI_LINE_COMMENT>
TOKEN :
{
  <MULTI_LINE_COMMENT: "'/" > : DEFAULT
}

<IN_MULTI_LINE_COMMENT>
MORE :
{
  < ~[] >
}

TOKEN :
{
  <SINGLE_LINE_COMMENT: "'" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>
}
4

1 に答える 1