美文网首页lex&&yacc技术文章编译原理
Lex & Yacc 学习笔记(1)- 简介

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

作者: hemny | 来源:发表于2018-08-16 15:17 被阅读127次

    一、背景

    在分析阅读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 的用途和工作流程。

    相关文章

      网友评论

        本文标题:Lex & Yacc 学习笔记(1)- 简介

        本文链接:https://www.haomeiwen.com/subject/vqtobftx.html