• 语法分析(14)...


    上一节讲完了SLR(LL(0)改进算法)的由来, 我们来大致分析一下该算法的基本思想...

    具体我们可以再来看一个冲突...

    可以看到状态2中, 既可以移进也可以归约, 同时由于R的follow集中也存在=(R可以是L, L后面可以是=), 所以两种情况都无法避免...

    为了解决这个冲突, 我们引出LR(1), 这里可能有会有点跳跃 :

    其实a(不是希腊子母)指的某一个或者某几个终结符...这个a只可能小于或者等于X的follow集, 至于原因, 我也解释不清...但这也是为什么LR(1)要比SLR更加准确...来看一个实际的例子 :

    仔细感受一下应该不难理解...

    同时我们继续来看另外一个例子 :

    会看到5, 11 或者8 10, 这两个状态差异不大, 可以合并, 但合并之后可能导致状态表分析不准确, 这里就是一个空间和准确度的权衡了.修改之后的算法就是LALR分析算法...

    其核心思想在于在不改变分析表准确度的情况下尽可能的对LR(1)分析表进行压缩...

  • 相关阅读:
    python之字典方法
    python之字符串方法
    python strip()方法使用
    Airtest自动化测试工具介绍
    selenium 环境配置
    一个自定义线程池的小Demo
    简单工厂模式
    BootStrap入门_创建第一个例子
    MongoDB的索引
    MongoDB的查询
  • 原文地址:https://www.cnblogs.com/nzhl/p/5534346.html
Copyright © 2020-2023  润新知