- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 
                        查看更多
                        
                    
                * 一、有向图法(Bell) 通过以下三个步骤从优先表构造优先函数: 1 对于每个终结符a,令其对应两个符号fa和ga,画一以所有符号和为结点的方向图。   如果a   b或a  b,则从fa画一条弧至gb。     如果a  b或a  b,则画一条弧从gb至fa 。   2 对每个结点都赋予一个数,此数等于从该结点出发所能到达的结点(包括出发点自身)。赋给fa的数作为f(a)的值,赋给ga的数作为g(a)的值。 3 检查所构造出来的函数f和g是否与原来的关系矛盾。若没有矛盾,则f和g就是要求的优先函数,若有矛盾,则不存在优先函数。 * * 现在必须证明:若a    b,则f(a)=g(b);若a   b,则f(a) g(b);若a   b,则f(a) g(b)。 第一个关系可从函数的构造直接获得。因为,若a    b,则既有从fa到gb的弧,又有从gb到fa的弧。所以,fa和gb所能到达的结是全同的。 至于a     b和a    b的情形,只须证明其一。 * * 如果a    b,则有从fa到gb的弧。也就是,gb能到达的任何结fa也能到达。因此,f(a)?  g(b)。 我们所需证明的是,在这种情况下,f(a)=g(b)不应成立。 我们将指出,如果f(a)=g(b),则根本不存在优先函数。假若f(a)=g(b),那么必有如下的回路: * *    因此有 a   b, a1          b, a1          b1, …, am         bm,  a       bm 对任何优先函数f’和g’来说,必定有 f’(a) g’(b)? f’(a1)? g’(b1)? … ? f’(am)? g’(bm)? f’(a) 从而导致f’(a) f’(a),产生矛盾。因此,不存在优先函数f和g。 fa1 fa fam gb1 gb gbm … … * 举例:      使用有向图法(Bell)构造优先函数  + * i # +     *     i    #    * * 二、Floyd方法 规则: (1)对于每一个Si?Vt∪{#} f(si)=g(si)=1 (2)迭代:若sisj但f(si)=g(sj),令               f(si)=g(sj)+1          若sisj但f(si)=g(sj),令               g(sj)=f(si)+1          若si=sj但f(si) ≠g(sj),令        f(si)=g(sj)=max(f(si),g(sj)) (3)重复步骤(2),直到收敛为止   * * 举例 使用floyd方法为以下优先矩阵构造优先函数 + * ( ) i # +       *       (    =  )     i     #     * * 三、优先函数应用 例:分析i+i*i 步骤 符号栈 优先函数 余留输入串 最左素短语 所选产生式 1 #  i+i*i# 2 #i  +i*i# i F→i 3 #F  +i*i# 4 #F+    i*i# 5 #F+i     *i# i F→i 6 #F+F     *i# 7 #F+F*      i# 8 #F+F*i       # i F→i 9 #F+F*F       # F*F T→T*F 10 #F+T       # F+T E→E+T 11 #E =      # 12 #E# accept * 总结 1 自底向上的语法分析 2 简单优先分析 3  算符优先分析法 4 优先函数 * 作业 P175                4-20   4-31   4-33 (二)简单优先文法的定义 定义:若一文法G的任何两个符号之间至多存在一种优先             关系,且任意两个不同的产生式无相同的右部,则称            G为简单优先文法。 例4.4 考虑文法G’[E]: E?E1  	E1?E1+T1 |T1	T1?T	T?T*F | F   F?(E) | i 由文法的产生式可直接看出: E1 = +, +=T1  T = * * = F  (=E   E=)  考查句型 E1+i*i 及 T*(E1+T1) E=E1=E1+T1=E1+T =E1+T*F =E1+T*i =E1+F*i =E1+i*i E= E1= T1= T =T*F = T*(E) =T*(E1) =T*(E1+T1) 从相应的语法树不难看出, +i, +F, +T, i*, F*, *i,以及: *(, (E1, E1), T1) * * 文法G’[E]的简单优先矩阵 通常,我们可把文法的全部优先关系用一矩阵来表示.例如前面所给文法G’[E]相应的优先矩阵为: * * (三)
                
原创力文档
                        

文档评论(0)