Part5自底向上的.ppt

Part5自底向上的

二义性文法在LR分析中的应用 悬空else的二义性构造LR(0)项目集后,发现冲突: I4:S→iS·eS S→iS· 程序设计语言中的规则,else要和最近的if…then…结构配对,因此当栈顶是iS,而输入是e的时候,要移进。 二义性文法在LR分析中的应用 特例产生式引起的二义性 数学公式编排预处理器EQN中使用了特例产生式 E→E sub E sup E E→E sub E E→E sup E E→{E} (复合表达式) E→c 二义性文法在LR分析中的应用 构造LR(0)项目集后,发现冲突: 一部分冲突如果定义了优先级和结合顺序,可以解决 定义sub和sup具有相同的优先级 定义其结合顺序是右结合的 一些归约-归约冲突不好解决: E→E sub E sup E· E→E sup E · LR语法分析中的错误恢复 在LR分析过程中,当我们处在这样一种状态下,即输入符号既不能移入栈顶,栈内元素又不能归约时,就意味着发现语法错误。 处理的方法分为两类: 第一类多半是用插入、删除或修改的办法。如果不能使用这种办法,则采用第二类办法, 第二类办法包括在检查到某一不合适的短语时,采用局部化的方法进行处理。类似前面讲过的同步符号 LR分析 LR(1)分析 LALR(1)分析 SLR(1)分析 LR(0)分析 自顶向下语法分析 非递归的预测语法分析 提取左因子 消除左递归

文档评论(0)

1亿VIP精品文档

相关文档