0

JLexを使用してこのようなコメントを認識する必要があります。

;this is a comment

ご覧のとおり、認識できる終わりはありません。私はどこでも検索しました、そして私が見つけたものによれば、私はこれらのようなものを使うべきです:

COMMENT = [;]([^\n])*
COMMENT = [;]([^\r\n])*

しかし、(次の行の)コメントの後に通常の単語が来ると、エラーが発生します。私のパーサーは問題ありません。私の問題はJLexにあると確信しています。手伝っていただけませんか?

4

1 に答える 1

1

コメントの開始時に新しい状態に入り、コメントの終了時にその状態を終了してみてください。

これがJLexPHPの例です。

<?php
include 'jlex.php';
%%
%state COMMENTS
%%

<YYINITIAL> ";" {
    $this->yybegin(self::COMMENTS);
}
<COMMENTS> [^\n] {
    return $this->createToken();
}
<COMMENTS> [\n] {
    $this->yybegin(self::YYINITIAL);
}
于 2012-09-12T05:18:13.303 に答える