我无法让我的杯子解析器解析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被解析之后执行代码块的想法?我想打印出我的符号表格,并用于调试目的。 –