对每个a(包括#)∈VT,对应两个符号fa,ga。 把所建立的符号尽可能划分为许多组: 若a b,则fa和gb就在一组; 若a b,c b,则fa和fc同组; 建立一个有向图,其结点是上一步中找出的组。 对于任何a和b,若 a b,画 fa→gb 弧,意味着f(a)g(b); 若 a b,画 gb→fa 弧,意味着f(a)g(b)。 如果上一步结果构成环,则f,g不存在; 否则 f(a)= 从fa组开始的路径和; g (b) = 从gb组开始的路径和。 例 6.8 利用上述分析表,假定输入串为 i * i + i ,描述LR分析器的工作过程。 二义文法的应用 任何二义文法决不是一个LR文法,因而也不是SLR或LALR文法,这是一条定理。 某些二义文法是非常有用的。可采用一定的方式对文法加以限制,保证每个句子只有一颗分析树。 二义性文法的应用 一、使用优先级和结合规则来解决分析动作的冲突 二义文法的应用 文法G7.1有两个明显的好处: 1)如需改变算符的优先级或结合规则无需改变文法自身; 2)文法的分析表所包含的状态肯定比G7.2所包含的状态要少得多。 下面将讨论如何使用LR分析的基本思想,凭借一些其他条件,来分析而已文法所定义的语言。 二义文法的应用 二义文法的应用 在I1,I7,I8中都存在冲突,用任何一种方法解决都会产
原创力文档

文档评论(0)