预测分析中的错误处理
错误检测基本思路¶
- 栈顶的终结符和当前输入符号不匹配
- 栈顶非终结符与当前输入符号在预测分析表对应项中的信息为空
预测分析中的错误恢复¶
恐慌模式¶
忽略输入中的一些符号,直到输入中出现由设计者选定的同步词法单元(synchronizing token)集合中的某个词法单元
其效果依赖于同步集合的选取。集合的选取应该使得语法分析器能从实际遇到的错误中快速恢复
例如可以把FOLLOW(A)中的所有终结符放入非终结符A的同步记号集合
如果终结符在栈顶而不能匹配,一个简单的办法就是弹出此终结符
分析表使用方法¶
- 如果M[A,a]是空,表示检测到错误,根据恐慌模式,忽略输入符号a
- 如果M[A,a]是synch,则弹出栈顶的非终结符A,试图继续分析后面的语法成分
- 如果栈顶的终结符和输入符号不匹配,则弹出栈顶的终结符
例: