认识到在JLex上没有特定结尾的评论

时间:2012-09-06 23:26:32

标签: comments lex

我必须使用JLex识别这样的评论:

;this is a comment

正如你所看到的,它没有可识别的结局。我到处搜索,根据我的发现,我应该使用其中一种:

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

但是当一个正常的词出现在评论之后(在下一行)我得到一个错误。我的解析器很好,我确定我的问题出在我的JLex上。你能帮我吗?

1 个答案:

答案 0 :(得分:1)

在评论开始时尝试进入新状态,并在评论结束时离开该状态。

这是JLexPHP的一个例子。

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

<YYINITIAL> ";" {
    $this->yybegin(self::COMMENTS);
}
<COMMENTS> [^\n] {
    return $this->createToken();
}
<COMMENTS> [\n] {
    $this->yybegin(self::YYINITIAL);
}