跳转至

预测分析中的错误处理

错误检测基本思路

  • 栈顶的终结符当前输入符号不匹配
  • 栈顶非终结符当前输入符号在预测分析表对应项中的信息为空

预测分析中的错误恢复

恐慌模式

忽略输入中的一些符号,直到输入中出现由设计者选定的同步词法单元(synchronizing token)集合中的某个词法单元

其效果依赖于同步集合的选取。集合的选取应该使得语法分析器能从实际遇到的错误中快速恢复
例如可以把FOLLOW(A)中的所有终结符放入非终结符A的同步记号集合

如果终结符在栈顶而不能匹配,一个简单的办法就是弹出此终结符

分析表使用方法

  • 如果M[A,a]是,表示检测到错误,根据恐慌模式,忽略输入符号a
  • 如果M[A,a]是synch,则弹出栈顶的非终结符A,试图继续分析后面的语法成分
  • 如果栈顶的终结符输入符号不匹配,则弹出栈顶的终结符

例: