1.在ubutu上安装 yacc的命令:

sudo apt-get install flex bison

flex:词法分析器

   flex是一个词法分析器。用来将一个.l文件生成一个.c程序文件。即生成一个词法分析器。然后读取输入,和正则表达式匹配,再执行相应的动作,实现了程序的功能。

   我们可以发现flex实现在程序外部就可以接受输入的功能。

bison:语法分析器

  根据文法把一系列的记号转换成一个语法分析树。

把两者联合使用可以实现对sql语言的解析。

由于调用这些命令的时候会使用很多命令行语句,即编译过程复杂的时候,我们可以把这些命令行语句写在一个makefile中。

2.首先介绍使用flex的一个例子:

                                            

第一步:首先我们写一个.l文件,文件中程序就是作图。该程序的功能就是计数器,单词的个数,字符个数,以及行数。

    程序中:分为三个部分。第一部分是%{%}中的部分,用来声明变量。

               第二部分是%%   %%中的部分。是指定的匹配规则。形式为正则表达式 加上 执行动作。其中,正则表达式用来匹配用户输入的内容,一旦匹配成功,则执行对应的动作。

               第三部分是c语言程序部分。调用flex提供的词法分析例程yylex()函数。执行,得到一个c程序。

第二步:在ubutu命令行终端中写入右图中命令。

    该命令的意思是:通过flex将一个.l文件生成一个lex.yy.c的程序。中间那两行文字是程序的输入,2,12,63是程序执行的结果。./a.out是将程序输出的结果保存在这个文件中。

总结:

3.bison的使用

.y文件中的规则定义部分中。包含两部分内容:

    第一部分:终结符的声明。在sql语言中就是SELECT  FROM  WHERE 等这些。

    第二部分:定义了语法。即"ADD" 就是表示一个加法。

    http://www.cnblogs.com/me115/archive/2010/10/27/1862180.html 这个文章中对文法的讲解比较朴素易懂。

4.flex和bison联合编译的过程。

flex 和bison的安装和使用的更多相关文章

  1. 在windows下安装flex和bison

    学习Stellar-core 需要依赖项flex .bison .gcc三个依赖项 下载得网址:链接: https://pan.baidu.com/s/1mitCLcs 密码: 3jaj   通过 w ...

  2. 在windows下安装flex和bison、GCC

    学习Stellar-core 需要依赖项flex .bison .gcc三个依赖项 下载得网址:链接: https://pan.baidu.com/s/1mitCLcs 密码: 3jaj   通过 w ...

  3. win7下面安装flex和bison

    通过Cygwin工具进行安装 下载地址cygwin 安装截图: 搜索flex,选择相应的版本进行安装 搜索bison 然后下一步 安装完成后,将D:\cygwin64\bin路径添加到PATH环境变量 ...

  4. flex and bison学习笔记01

    工作需要,学习一下Flex and bison,以前在编译原理的课上听老师说过他们的前辈,lex and yacc.Flex and bison就是lex and yacc的升级版. 参考书:flex ...

  5. Flex 和 Bison 使用方法

    背景知识 在学编译原理的时候,同时在做南京大学的编译原理课程实验,这里是链接,整个实验的效果是实现一个完整的 C-- 语法的编译器.C-- 语法是他们老师指定的一种类 C 语言. Flex 和 Bis ...

  6. flex与bison

    flex与bison 中文版 目录: 第一章:flex和bison简介 第二章:使用flex 第三章:使用bison 第四章:分析sql 第五章:flex规范参考 第六章:bison规范参考 第七章: ...

  7. 使用flex和bison实现的sql引擎解析

    因为老师要求,近期在做oceanbase存储过程的实现,在oceanbase 0.4曾经是不支持存储过程的.实现的主要步骤主要包含 1.语法解析 2.词法解析 3.详细运行语法树的步骤 如今先来说说语 ...

  8. flex与bison的学习

    获取bison http://www.gnu.org/software/bison 获取flex http://flex.sourceforge.net/ 本书的范例 ftp://ftp.iecc.c ...

  9. Windows下 flex + bison 小例子

    .下载flex和bison,网址是http://gnuwin32.sourceforge.net/packages/flex.htm 和http://gnuwin32.sourceforge.net/ ...

随机推荐

  1. php函数unserialize数据返回false问题分析

    unserialize的这个问题是由一个emlog论坛用户在使用时报错而发现的 问题表现情况如下: emlog缓存的保存方式是将php的数据对象(数组)序列化(serialize)后以文件的形式存放, ...

  2. python 基础 9.6 设计表结构

    一. 设计表结构    在操作设计数据库之前,我们先要设计数据库表结构,我们就来分析分析经典的学生,课程,成绩,老师这几者他们之间的关系,我们先来分析各个主体他们直接有什么属性,并确定表结构,在实际开 ...

  3. poj2485

    Highways Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27912   Accepted: 12734 Descri ...

  4. 【BZOJ4930】棋盘 拆边费用流

    [BZOJ4930]棋盘 Description 给定一个n×n的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置(x,y),(u,v)能互相攻击当前仅 当满足以下两个条件: 1:x=u或y ...

  5. zipkin环境搭建

    基于jdk1.8 下载zipkin jar包 用wget下载zipkin官方最新jar包 wget -O zipkin.jar 'https://search.maven.org/remote_con ...

  6. 鼠标画矩形openCV

    #include <cv.h> #include <highgui.h> #include <stdio.h> /*鼠标画矩形*/ void my_mouse_ca ...

  7. javascript中apply和call的区别

    请补充   136页  pdf  高级javascript设计

  8. table表格用tbody新属性获取DOM元素

    // alert(oTab.getElementsByTagName("tbody")[0] // .getElementsByTagName('tr')[1] // .getEl ...

  9. linux 7- - watch,free,mpstat,vmstat,iostat,pidstat,df,du

    十八.  和系统运行状况相关的Shell命令:     1.  Linux的实时监测命令(watch):     watch 是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的 ...

  10. 探测web服务器质量——pycurl

    pycurl是一个用C语言写的libcurl Python实现,功能非常强大,支持的操作协议有FTP.HTTP.HTTPS.TELNET等,可以理解为Linux下curl命令功能的Python封装,简 ...