前面总结的差不多了,这边记录下,零碎的相关阅读可以备忘的一些知识点

Bsion文档,下面是中文的地址  https://blog.csdn.net/chinamming/article/details/16974571

一. 3.4 递归规则-Recursive Rules

   上面的是左递归,下面的是右递归,推荐的是尽量左递归的写法

.3.7.2 操作符优先级-Operator Precedence

  使用%left,%right或者%nonassoc 可以一次声明一个记号并指明它的优先级和结合性. 这些被称做优先级声明(precedence declarations)

  • 操作符的结合性决定了如何重复使用嵌套的操作符: `x op y op z' 是先组合xy,还是先组合yz%left指明左结合性(先组合xy)而 ,%right指明了有结合性(先组合yz) .%nonassoc指明了无结合性,即`x op y op z' 被认为是一个语法错误.
  • 一个操作符的优先级决定了它如何与另外的操作符嵌套使用. 在一个优先级声明中声明的所有记号有相同的优先级, 如何嵌套使用它们取决于它们的结合性. 当两个记号在不同的优先级声明中,稍晚声明的拥有更高的优先级,并且先被组合.

  解决中冲突的方法是比较正在考虑的规则和超前扫描记号的优先级. 如果超前扫描记号的优先级更高,那么选择移进. 如果规则的优先级更高,那么选择归约. 如果它们有相同的优先级, 那么靠那个优先级的结合性来作出选择

.5.2 移进/归约冲突-Shift/Reduce Conflicts

  这里我们假定IF,THENELSE是用来指定关键字的终结符.

  当ELSE被读入成为超前扫描记号, 栈中的内容(假定输入是有效的)刚好可以由第一个规则进行归约. 但是移进ELSE也是合法的, 因为这最终将会导致由第二个规则进行的归约.

  这种情况,移进或者归约都是有效的,被称为移进/归约冲突(shift/reduce conflict). Bison被设计成选择移进来解决这些冲突, 除非有其它的操作符优先级的指导

四.5.4 上下文依赖优先级-Context-Dependent Precedence

   一个操作符的优先级通常依赖于上下文. 这最开始听起来很古怪,但它的确很常见.一个负号操作符有比一元操作符更高的优先级并且比二进制操作符的优先级稍低(低于乘法).

五.5.7 神秘的归约/归约冲突-Mysterious Reduce/Reduce Conflicts

没怎么看明白,主要是2种状态不能区分,要么就是修改语法看看能不能更完善,要么就是下面的推荐

当问题产生时, 你通常可以通过指明两个被混淆的分析器状态 并且添加使它们看起来截然不同的额外的东西 来修补它, 在上面的例子中, 如下地向return_spec添加一个规则会消除这个问题:

这样做改正这个问题, 因为在return_spec开始部分ID后的上下文中引进了一个可能的额外的活动规则. 这个规则在param_spec相应的上下文中并不是活动的, 所以两个上下文接受了不同的分析器状态. 只要yylex永远不产生记号BOGUS, 新增的规则就不能改变分析输入的实际方法.

最新文章

  1. webapp应用--模拟电子书翻页效果
  2. Oracle 和 SqlServer 的区别
  3. TypeError: test() got multiple values for keyword argument 'key'
  4. 通过pip安装模块
  5. Android基于mAppWidget实现手绘地图(七)–根据坐标添加地图对象
  6. session生命周期
  7. elementoryOS / ubuntu U盘启动问题的解决
  8. iOS另类的内存管理
  9. [LAMP]——mod_security和mod_evasive模块的安装
  10. as3 中trace() 函数对效率的影响
  11. 【HDOJ】2888 Check Corners
  12. Qt删除指定文件
  13. HDU 3584 Cube(三位树状数组)
  14. js判断是否为ie浏览器
  15. JDBC (三)
  16. Android-FloatingActionButton
  17. EntityFramework Core进行读写分离最佳实践方式,了解一下(一)?
  18. tar压缩解压文件
  19. Arrays.asList() 的使用注意
  20. 阿里巴巴Java编码规范,来测测你能得多少分

热门文章

  1. Spring cloud微服务安全实战-4-1章节概述
  2. phpexcel 导出excel无法打开,提示文件格式或文件名无效,文件损毁,解决办法
  3. spring 装配bean的混合使用
  4. Hello log4net——做一个实用好用的log4net的demo(转)
  5. 海思NB-IOT模组在平台上注册
  6. js 验证手机号
  7. 使用wkwebview时,push后,再pop返回,报错
  8. php生成0~1随机小数方法
  9. ROS安装,配置
  10. Generative Adversarial Network (GAN) - Pytorch版