我正在开发自己的编译器,但在 java 语法的恐慌模式下的错误恢复设计存在问题。
我想过多种解决方案,但真正的问题是:
我怎么能用 bison c++ 做到这一点?
我这样做了:
包 2
导入java.lang.*;
错误必须消耗到第一个分号,并且使用规则正确运行
package_rule: 包错误 ';'
但是如果我写了这段代码:
包 2
导入 java.lang.*
类 y { void 方法() { int m }
}
我需要像标准编译器这样的解析器来报告错误:
包装行应有标识符。失踪 ';' 在导入指令行报告一个包。发短信';' 在 int m 线。
我的意思是我需要在包错误之后使用令牌直到第一个分号或在声明它们之前在最后一行找到类或接口声明时停止!并报告行后发现的任何其他错误:
int m // 缺少 ';'
请帮助我,在我看来有多种解决方案,但是如何使用 bison c++ for java 语法呢?