我無法讓我的杯子解析器解析EOF標記。我在我的JFLEX代碼使用%cup
標誌意味着文檔中讀到,有目前這樣的:解析EOF令牌CUP
%eofval{
return new java_cup.runtime.Symbol(<CUPSYM>.EOF);
%eofval}
%eofclose
這一切都很好,很好,但是當我嘗試下面的第一條規則在我的語法(CUP文件):
program ::= program declaration EOF
| /* Empty */
;
我收到EOF未由CUP聲明的錯誤消息。
Error : java_cup.runtime.Symbol "EOF" has not been declared
Allrighty,所以我以下內容添加到我的CUP文件:
terminal EOF;
沒有,因爲那時CUP告訴我:
Fatal : JavaCUP Internal Error Detected: Duplicate terminal (EOF) created
enter code here
然而,如果沒有定義終端EOF,和我在sym.java
類,杯生成一看我就發現:
public static final int EOF = 0;
所以我很失去了對如何解決這一問題。雙方的文件在這個問題上確實含糊不清。
編輯: 我想解析EOF標記的主要原因是因爲我想在最後打印出我的符號表以及其他用於調試目的的東西。
所以,你對我怎麼能插入我的EOF被解析之後執行代碼塊的想法?我想打印出我的符號表格,並用於調試目的。 –