zoukankan      html  css  js  c++  java
  • flex 和bison的安装和使用

    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联合编译的过程。

  • 相关阅读:
    excelhelp
    导入数据到GridView
    sql2005悠改sa
    状态存储管理 encode,decode,transfer
    Session持久化
    Microsoft SQL Server 2005 数据类型
    Cookie (HttpCookie的实例)
    role设计
    ajax
    poj 3370 Halloween treats 夜
  • 原文地址:https://www.cnblogs.com/lyr2015/p/6099687.html
Copyright © 2011-2022 走看看