Postgresql中yacc语法树冲突解决方法(shift/reduce conflicts)

news/2024/4/28 0:49:44/文章来源:https://blog.csdn.net/jackgo73/article/details/127431457

处理方法

Postgresql中的gram.y可以独立编译,独立编译可以控制bison的参数来打印具体错误:

PG15

cd src/backend/parserbison -d -o gram.c gram.y -Wno-deprecated

正常执行后会产生gram.c文件,一旦发生冲突,bison会报错,例如:
在这里插入图片描述
但没有进一步的信息不好定位问题,这里提供两种方式打印更详细的错误帮助定位:

一、命令行直接输出冲突位置:

bison -d -o gram.c gram.y -Wno-deprecated -Wcounterexamples

(如果命令不支持counterexamples请更新bison:https://ftp.gnu.org/gnu/bison/)

结果:
在这里插入图片描述
可以看出这是一个reduce/recude冲突,位置也给出了。

二、冲突信息输出到文件:

bison --report="cex" -d -o gram.c gram.y

会在当前目录下生成gram.output文件。在文件中搜索conflict on token即可:
在这里插入图片描述

yacc的两种冲突

reduce/reduce冲突:两条规则都可以规约当前token

实例:VARCHAR改规约哪个?发生冲突。
在这里插入图片描述

shift/reduce冲突:两条规则既可以移进也可以规约token

实例:VARCHAR向右移进 还是 向上规约?发生冲突。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_404189.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式—关于如何更好的封装与创建对象

上一节我们主要学习了使用设计模式来写代码的指导思想以及设计模式的分门别类,本节主要学习创建型的三种设计模式是怎么使用的。如何利用创建型设计模式来指导我们更好的封装代码更好的创建对象。 为什么要封装?封装能带给我们什么好处?定义变量不会污染外部:封装的首要目的…

神经网络图像识别技术,神经网络指纹识别

1、声纹识别技术未来的发展趋势如何? 近几年来,我国生物识别技术行业市场主体数量呈迅速增长的趋势,截至目前,行业企业数量超4000家。据统计,2013-2018年,我国生物识别技术行业新增企业数量呈逐年增长的趋…

【编程题】【Scratch四级】2022.06 成绩查询

成绩查询 期末考试结束了,小朋友想知道自己考试的成绩和班级排名,让我们一起来实现这个功能吧! 1. 准备工作 (1)保留默认白色背景和小猫角色; (2)创建名为“姓名”和“成绩”的列表,按照图1输入相关内容。 2. 功能实现 (1)点击小绿旗,小猫询问“你要查询谁的成…

JS(第十课)JS中的对象

Com.Java.Basis第九课 《类与对象》_星辰镜的博客-CSDN博客 有兴趣的可以去看一下 本文内容核心:对象 在百度翻译中对象称为object 安装插件 第一部分去找找在JS中对象的语法是什么 如何去创建对象的,调用对象! var name"李四"; var people…

图形学-(视图变换,投影变换)

1.视图变换 在 3 维物体变到二维平面的过程中,我们需要规定好相机的位置。对于相机所做的变换就是视图变换 (Viewing/Camera transformation)。 我们需要对相机位置进行定义,对于一个相机我们要规定下面三个属性: 相…

Transformer3

又是 一篇关于Transformer的~~ 太多了 本文结合Transformer和ConvNets的优点,构造了一种新的即插即用运算符ParC,可以高效地部署在不同的平台上。一个Trick 搞定 CNN与Transformer,即插即涨点即提速! 论文链接:http…

Ansible自动化运维工具介绍与部署

ansible自动化运维工具介绍与部署 文章目录一、什么是自动化运维?二、常用的自动化运维工具2.1 Ansible2.2 SaltStack2.3 Puppet2.4 三种自动化工具特点对比三、介绍Ansible3.1 什么是 Ansible?3.2 Ansible 无需代理3.3 Ansible 方式四、部署Ansible4.1 控制节点4.…

U-BOOT小全(三):SPL框架

1、什么是SPL? 为了可以使已有的所有SPL的设计统一,也为了简化添加适用于新板子的设计,专门设计一个通用的SPL框架。在SPL框架下,一个板子的所有代码都能够被重用。代码复制和链接不再是必要的。 在uboot-2011的/doc/README.spl…

跨境电商必读:什么是社交媒体营销?

关键词:跨境电商,社交媒体营销 社交媒体渠道已迅速成为业务发展战略不可分割的一部分,关于社交媒体如何重塑消费者行为,以及组织如何利用它获得收益,网络上已经有大量相关信息,但仍有许多跨境电商企业难以…

H3C VLAN简单配置

将两台电脑都设为自动获取IP&#xff0c;然后左边的加入vlan10,右边的加入vlan20 先配置左边交换机 <H3C>system-view [H3C]user-interface console 0 [H3C-line-console0]idle-timeout 0 0 [H3C-line-console0]exit [H3C]vlan 10 [H3C-vlan10]port GigabitEthernet 1/…

04-Jenkins构建Maven项目

1&#xff09;Jenkins项目构建类型 a&#xff09;Jenkins构建的项目类型介绍 Jenkins中自动构建项目的类型有很多&#xff0c;常用的有以下三种&#xff1a;自由风格软件项目&#xff08;FreeStyle Project&#xff09;Maven项目&#xff08;Maven Project&#xff09;流水线项…

沉睡者IT - 如何识别NFT“洗盘交易”?

推荐阅读1&#xff1a;【创业粉引流变现项目】 推荐阅读2&#xff1a;【抖音网上如何赚钱变现】 推荐阅读3&#xff1a;【中视频横版16:9视频制作教程】 对金融人士来说&#xff0c;“洗盘交易”&#xff08;wash trading&#xff09;并不是一个新词。加密货币也以相同的买入…

grid管理的数据库实例修改时区问题

问题描述 由于安装创建数据库之前没将操作系统的时区设置为本地正确的时区&#xff08;Pacific/Apia&#xff09;&#xff0c;使用的是GMT时间&#xff08;UTC时区&#xff09;&#xff0c;后续将操作系统和数据库修改成正确时区之后&#xff0c;发现sysdate显示有误。 服务端…

计算机网络基础 ---- 动态路由---OSPF协议----详解

OSPF协议&#xff1a; ospf&#xff1a;开放式最短路径优先协议&#xff08;Open Shortest Path First&#xff09; 一、基本概念&#xff1a; 是携带真实掩码&#xff08;无类别链路状态IGP协议&#xff09;&#xff1b;周期更新&#xff08;30min&#xff09; 触发更新 -…

Taichi 加速 Python 中图像处理

Taichi 咱来说一说哈 在计算机视觉&#xff08;特别是深度学习图片预处理、模型训练&#xff09;等复杂度较高&#xff0c;技术迭代速度快的领域&#xff0c;用 Python 快速开发出算法原型、验证效果是许多研发人员的首选方案。著名图像处理库 OpenCV 就提供了完整的 Python 封…

Ubuntu Linux 操作系统-清华大学开源软件镜像站下载

Ubuntu 是一个由全球化的专业开发团队建造的操作系统。它包含了所有您需要的应用程序&#xff1a;浏览器、Office 套件、多媒体程序、即时消息等。Ubuntu 是一个 Windows 和 Office 的开源替代品。 Ubuntu 的名称来自非洲南部祖鲁语或豪萨语的 “ubuntu” 一词&#xff08;译为…

总结超参数最优化

1.超参数是什么&#xff1f; 超参数是指的是比如SGD的一个学习率&#xff0c;或者是抑制过拟合时候的一个权重衰减率参数等等&#xff0c;这些参数需要一个合适的值才能很好的提升神经网络的学习效率 2.我们在进行超参数最优化的时候如何去做到超参数最优化&#xff1f; 2.1.设…

盘点十大国内外热门的SaaS点评平台

在B端市场里&#xff0c;企业如何调研、选择企服软件是困扰已久的问题。使用者需要选择合适的企服软件去提升企业内部效率&#xff0c;因此&#xff0c;选择一个合适的SaaS点评平台便非常重要。在SaaS点评平台&#xff0c;使用者可以了解、选择产品&#xff0c;而服务商可以收获…

撰写SCI论文好用的免费工具(下) - 易智编译EaseEditing

书接上文。易智编译再推荐几种好用的写作工具&#xff1a; 7.Grammarly Grammarly是谷歌浏览器的一个扩展程序&#xff0c;可在浏览器任一窗口中检查你文字的拼写和语法。无论是使用Google文档编写&#xff0c;撰写电子邮件还是发布文章&#xff0c;Grammarly都会指出英语错误…

CNN的识别机制

搬来这个给自己学学~~ 所有基础都要写一个 大佬勿怪 只为自己学习 近年来&#xff0c;CNN 因其优异的性能&#xff0c;在计算机视觉、自然语言处理等各个领域受到了研究者们的青睐。但是&#xff0c;CNN 是一个 「黑盒」 模型&#xff0c;即模型的学习内容和决策过程很难用人类…