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 :

  • 相关阅读:
    Flink 双流合并之connect Demo2
    Flink 双流合并之connect Demo1
    Flink 双流合并Join
    Flink状态保存CheckPoint
    Flink状态之OperatorState
    Flink状态之AggregateState
    Flink状态之ReduceState
    Flink状态之MapState
    Flink状态之KeyedListState
    大数据框架环境安装与配置01--服务器基本设置
  • 原文地址:https://www.cnblogs.com/nzhl/p/5534198.html
Copyright © 2011-2022 走看看