zoukankan      html  css  js  c++  java
  • 语法分析(13)...

    最后我们来分析一下这个所谓的LR(0)分析算法...

    图中第二个L应该是R, 然后所谓的0个前看符号我确实不太能够理解, 据说要和lr(1)比较了才知道, 接下来研究它的缺点(说实话感觉能分析的文法有限这不是ll(1)的缺点吗? 不说说lr类算法没有这类缺点吗? )

    接下来就是具体的错误分析实例了...

    据说根据左上角推导得出的分析表是这样的, 然后其实对于状态3, 不管接受x, y, $都能做归约(但实际上只有$, 其他都应该报错, 这样会导致多次循环分析导致错误定位)... 但是说实话不太理解为什么之前的表生成算法为什么会生成这张表, 感觉如果严格按照表生成算法的话, 三号状态对于x, y, $ 都应该是空的而不是r2(都不知道r2是怎么生成的...) 个人猜测是这样, 当算法检测到分析点(就是图中的黑点, 左边代表已经分析过的字符, 右边代表期待看到的字符)已经到达末尾, 此时不管期待看到什么字符都要先归约在分析, 所以一旦碰到这种情况, 所有的字符一律填归约, 但是算法里面也没有提到具体是不是这样, 只是猜想而已...

    另外一个问题是冲突:

    可以看状态3, 此时如果在状态3, 既可以移进, 又可以归约, 就出现了冲突...

    为了解决这两问题, 这里提出一种lr改进算法叫做SLR :

  • 相关阅读:
    生成格雷码 转自leetcode
    webstorm注册码 永久有效!!!(亲测有效)
    Myeclipse或者eclipse太卡
    对封装的再次理解(容器)
    几个好的参考的网站
    将json字符串转为json对象,从对象中取需要的数据
    ElementUI学习笔记
    Oracle的case when 和decode
    20190807更新数据相关笔记
    oracle未查找到任何数据问题
  • 原文地址:https://www.cnblogs.com/nzhl/p/5534198.html
Copyright © 2011-2022 走看看