首页 > 其他 > 详细

自下而上的分析法(笔记) b站课堂:BV11t411V74n?p=18

时间:2020-05-16 22:22:15      阅读:79      评论:0      收藏:0      [点我收藏+]

基本思想:

  从输入串开始,逐步进行归纳,直到文法的开始符号

  归纳:根据文法的产生式规则,把产生式的右部替换成左部符号。

  从树末端开始,构造语法树

 

 

归约相关概念:

规范归约和最右推导,前者从右到左,后者从左到右,两者互为逆过程

只有规范归约出来的句型才能叫归约句型

 采用 移进-归约 的方法(使用符号栈,以#开始或者结尾)

符号栈的使用例子:

技术分享图片

 

 技术分享图片

 

 技术分享图片

句柄 就是可归约串

 在符号栈里,一旦栈顶出现句柄就进行归约

符号栈的内容和剩下的输入串一定构成一个归约句型

归约核心还是关于句柄的可归约算法。关键在于句柄的判断和选择才能进行归约,才能有效形成语法分析树

 

可归约算法: 

  算符优先分析法:

    按照算符的优先关系和结合性质进行语法分析

    适合分析表达式

   基本思想:

    起决定作用的是相邻的两个算符(终结符)之间的优先关系。所谓算符优先分析法就是定义算符之间的某种优先关系,借助于这种关系寻找可归约串进行归约。

    优先关系的定义:定义任何两个可能相继出现的终结符a与b的三种优先关系(与顺序有关,a一定出现在b的左边,且a、b相邻)

 技术分享图片

    相关概念添加:

    技术分享图片

 

      技术分享图片

        例子:

    技术分享图片

 

    技术分享图片

 

      说明:空意味着不能连续出现,列为左边先出现

     技术分享图片

 

        技术分享图片

 

     技术分享图片

 

 

     构造FIRSTVT(P): 

    技术分享图片

 

    技术分享图片

 

     同理,LASTVT(P)也是如此。

    例子:

     技术分享图片

 

     技术分享图片

 

      技术分享图片

     素短语概念:

    技术分享图片

 

     最左素短语:句型最左边的素短语  

     技术分享图片

     注意

     技术分享图片

 

    算法优化:

    事实上优化了查表的速度,空间 。

    技术分享图片

 

 

 

 

 

   有些优先关系表没有优先函数,例子:

     技术分享图片

 

 

     优先函数存在,但不唯一(大小关系确定但是数的大小可以+常量,所有有无数个)

     构造方法:

    技术分享图片

 

     证明:

    技术分享图片

 

     技术分享图片

    技术分享图片

 

     技术分享图片

 

     算法实际思想:根据非终结符的优先关系寻找最左素短语进行归约,其中可以使用优先函数进行优化。

    

  LR分析法:

    规范归纳

技术分享图片

技术分享图片

    基本思想: 

    规范归约的关键也是寻找句柄:要从历史(已经一如栈的内容)、展望(根据产生式预测的输入)和现实(当前输入的符号)进行操作。

  技术分享图片

 

 

 

  下面从优先表的使用再到优先表的产生进行实现LR分析法。

    LR分析方法(优先表就是LR分析程序中进行分析的依据):

    技术分享图片

     LR分析表例子:

    技术分享图片

    Action中以S开头的技术分享图片,以r开头的技术分享图片

    acc结束技术分享图片

    以分析表具体分析过程例子:

     技术分享图片

 

 

     技术分享图片

 

 

     示例:见视频

    相关概念:LR(K)文法

     技术分享图片

 

 

     LR文法真包含于无二义文法。

    ??LR优先表的产生:

    首先继续明确一下句柄在栈的体现:

    技术分享图片

 

 

     相关概念:子的前缀,活前缀

    技术分享图片

     产生优先表的思想:  使用一个DFA使得栈中始终是活前缀

    技术分享图片

    相关概念:

     技术分享图片

    技术分享图片

    技术分享图片

 

 

    对于每个产生式都可以构造对应的项目,所有的项目可以形成一个NFA,都可以改进成如下的黄图

    技术分享图片,只有项目有效就可以进行形成句柄

    但是,有时候可能有多个接受项目,所以需要改进 ,例子如下,对于bc,三个项目都有

  技术分享图片技术分享图片

 

      改进:

     技术分享图片

 

     使用闭包

     技术分享图片

 

      技术分享图片

 

   小结:

技术分享图片

 

自下而上的分析法(笔记) b站课堂:BV11t411V74n?p=18

原文:https://www.cnblogs.com/Keep-J0K3R/p/12877815.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!