我正在使用 CUP 生成解析器,并且我希望一个空文件成为可接受的程序。我尝试根据对类似问题here的回答将空大小写添加到我的开始符号中。
start with prog;
/* The grammar rules */
prog ::= class_block:cb
| class_block:cb stmts:sb
| stmts:sb
| // desired empty case
;
包括所需的空案例给我以下错误:
parser.java:516: error: incompatible types: Object cannot be converted to Symbol
CUP$parser$result = parser.getSymbolFactory().newSymbol("prog",0, ((java_cup.runtime.Symbol)CUP$parser$stack.peek()), RESULT);
如何修改我的语法以便解析器接受一个空文件?我使用 Jflex 作为我的词法分析器,使用 ComplexSymbolFactory 作为符号的类型。
编辑:我已经确认上面的语法是包含空的正确方法。但是, ComplexSymbolFactory 在将空对象转换为符号时遇到问题。即使从官方 CUP 网站运行此示例,我也会收到此错误。
慕仙森
LEATH
相关分类