我必须使用JLex识别这样的评论:
;this is a comment
正如你所看到的,它没有可识别的结局。我到处搜索,根据我的发现,我应该使用其中一种:
COMMENT = [;]([^\n])*
COMMENT = [;]([^\r\n])*
但是当一个正常的词出现在评论之后(在下一行)我得到一个错误。我的解析器很好,我确定我的问题出在我的JLex上。你能帮我吗?
答案 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);
}