Lex & Yacc 学习笔记(1)- 简介

一、背景

在分析阅读pg 11的源代码时,发现pg的语法分析模块使用了Lex&Yacc。
pg使用的的Flex & bison——lex & yacc的升级版。

二、Flex & bison简介

Flex和bison是两个用来生成程序的工具,它们生成的程序分别叫做词法分析器和语法分析器,postgresql主要是用来生成SQL语句的词法和语法分析器。

flex & bison

三、Flex & bison 的工作流程

任何一种语言,都是有一定的语法规则的,不管是人类的语言,还是计算机语言(如C/C++编程语言等),因此,可以利用这些已知的规则,来对相应的语言进行分析。

例如汉语中的一个句子,基本的格式是:主(名词/代词)+谓(动词)+宾(名词/代词),当你在说一句话的时候,我们把你说的话(输入)先拆分成一个个有意义的字或者词组,然后对照该语法,看词性及组合,是否符合既定的语法规范,如果符合,则可以知道你说的话是符合规范的。

比如,你说“我吃饭”,输入会被依次拆成:“我”、“吃”、“饭”
它们分别是代词、动词、名词,因此符合上面的语法规则,因此这句话是OK的。而如果说“我饭吃”,则会发现与上面的规范不符合(也没有其他符合的规范),因此这句话语法上是有问题的。

Flex和bison生成的词法和语法分析器就是干这两件事的:
1. Flex生成的词法分析器将输入拆分成一个个记号(token);
2. bison生成的语法分析器根据已有的规则,分析这些token的组合,是否符合语法规范。

工作流程

四、总结

本文主要介绍了Lex & Yacc 的用途和工作流程。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 简介 如果你有Unix环境的编程经验,想必你肯定遇到过神秘的Lex和YACC工具,在GUN/Linux中,又分别称...
    upupSue阅读 10,085评论 0 8
  • 简介网络浏览器很可能是使用最广的软件。在这篇入门文章中,我将会介绍它们的幕后工作原理。我们会了解到,从您在地址栏输...
    wengjq阅读 6,558评论 2 15
  • 如果头发一直长 长到腰窝之上 如果指甲也恣意地长 长成原始的初状 如果我怀抱热望 尔后又失望 剪去头发在肩胛的长 ...
    绘子啊阅读 2,767评论 0 0
  • 早上 自磨豆浆 蛋饼 饼干 这个星期感觉自己迷茫,面临转折。 现在回想一下自己,什么时刻是自己的转折点呢? 第一个...
    黄心西瓜C阅读 2,854评论 0 0
  • 十一期间,带着一岁半的儿子跟闺蜜聚会,闺蜜带着她一岁七个月的儿子,想象中我和闺蜜还可以跟以前一样畅聊人生,可事实是...
    张茜007er阅读 2,981评论 0 5

友情链接更多精彩内容