LR语法分析中的错误恢复

当LR语法分析器在查询语法分析动作表并发现一个报错条目时,它就检测到了一个语法错误。在查询GOTO表时不会发现语法错误。如果当前已扫描的输入部分不可能存在正确的后续符号串,LR语法分析器就会立刻报错。规范LR语法分析器不会做任何多余的归约动作,会立刻报告错误。SLR和LALR语法分析器可能会在报错之前执行几次归约动作,但是它们决不会把一个错误的输人符号移人到栈中。

在LR语法分析过程中,我们可以按照如下方式实现恐慌模式的错误恢复策略。我们从栈顶向下扫描,直到发现某个状态s,它有一个对应于某个非终结符号A的GOTO目标。然后我们丢弃零个或多个输人符号,直到发现一个可能合法地跟在A之后的符号a为止。之后语法分析器将GOTO(s, A)压人栈中,继续进行正常的语法分析。在实践中可能会选择多个这样的非终结符号A。通常这些非终结符号代表了主要的程序段,比如表达式、语句或块。比如,如果A是非终结符号stmt,a就可能是分号或者。其中,标记了一个语句序列的结束。

«1»
最近发表
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
搜索
Tags列表
网站收藏
图标汇集
  • 订阅本站的 RSS 2.0 新闻聚合
友情链接

热门搜索: 外链域名 高外链域名 高收录域名

Copyright www.thyst.cn. Some Rights Reserved.