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 回答