2012-09-06 47 views
0

沒有具體的結束確認意見,我不得不承認這樣使用JLex評論:與JLex

;this is a comment 

,你可以看到,它沒有可識別的結局。我搜索無處不在,並根據我發現我應該使用類似下列操作之一:

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

但是當一個正常的字來評論後(下一行),我得到一個錯誤。我的解析器很好,我確定我的問題出現在我的JLex上。你可以幫我嗎?

+0

你能發佈更多關於你得到的錯誤的信息嗎? – yzernik

回答

1

嘗試在註釋開始時輸入一個新狀態,並在註釋開始時離開該狀態。

下面是JLexPHP的一個示例。

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

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