精华内容
下载资源
问答
  • windows下bison安装使用

    千次阅读 2018-11-06 00:52:25
    windows下bison安装使用

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    windows下bison安装使用

    欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51100524

    GNU bison 是属于 GNU 项目的一个语法分析器生成器。Bison 把一个关于“向前查看从左到右 最右”(LALR) 上下文无关文法的描述转化成可以分析该文法的 C 或 C++ 程序。它也可以为二义文法生成 “通用的 从左到右 最右” (GLR)语法分析器。

    Bison 基本上与 Yacc 兼容,并且在 Yacc 之上进行了改进。它经常和 Flex (一个自动的词法分析器生成器)一起使用。

    下载时候选择“Completepackage exceptsources”,安装路径不要选择默认C:\ProgramFiles\GnuWin32,选择C:\GnuWin32,把C:\Gnuwin32\bin加载到PATH变量。

    下载路径:http://gnuwin32.sourceforge.net/packages/bison.htm 

    GnuWin provides ports of tools with a GNU or similar open source license, to modernMS-Windows (Microsoft Windows 2000 / XP / 2003 / Vista / 2008 / 7)

    安装完毕后执行

    >bison–help

    Usage: bison [OPTION]... FILE

    Generate LALR(1) and GLR parsers.

     

    Mandatory arguments to long options are mandatory for short optionstoo.

    The same is true for optional arguments.

     

    Operation modes:

      -h, --help                 display this help and exit

      -V, --version              output version information andexit

          --print-localedir      output directory containinglocale-dependent data

          --print-datadir        output directory containing skeletonsand XSLT

      -y, --yacc                 emulate POSIX Yacc

      -W,--warnings=[CATEGORY]  report thewarnings falling in CATEGORY

     

    Parser:

      -L, --language=LANGUAGE    specify the output programming language

                                (this is an experimental feature)

      -S, --skeleton=FILE        specify the skeleton to use

      -t, --debug                instrument the parser fordebugging

          --locations            enable locations computation

      -p,--name-prefix=PREFIX   prepend PREFIX tothe external symbols

      -l, --no-lines             don't generate `#line' directives

      -k, --token-table          include a table of token names

     

    Output:

          --defines[=FILE]       also produce a header file

      -d                         likewise but cannotspecify FILE (for POSIX Yacc)

      -r, --report=THINGS        also produce details on the automaton

          --report-file=FILE     write report to FILE

      -v, --verbose              same as `--report=state'

      -b,--file-prefix=PREFIX   specify a PREFIXfor output files

      -o, --output=FILE          leave output to FILE

      -g, --graph[=FILE]         also output a graph of the automaton

      -x, --xml[=FILE]           also output an XML report of the automaton

                                (the XML schema is experimental)

     

    Warning categories include:

     `midrule-values'  unset or unusedmidrule values

      `yacc'            incompatibilities with POSIX YACC

      `all'             all the warnings

      `no-CATEGORY'     turn off warnings in CATEGORY

      `none'            turn off all the warnings

      `error'           treat warnings as errors

     

    THINGS is a list of comma separated words that can include:

      `state'        describe the states

      `itemset'      complete the core item sets with theirclosure

      `lookahead'    explicitly associate lookahead tokens toitems

      `solved'       describe shift/reduce conflicts solving

      `all'          include all the above information

      `none'         disable the report

     

    Report bugs to <bug-bison@gnu.org>.

     

     

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • flex&bison安装与简单使用

    千次阅读 2020-10-18 02:42:16
    bison安装与简单使用 1.wls安装 这里使用的是wls,wls安装教程可以参考这一篇,亲测可用,安装后是自带gcc的,但是相关依赖没有,需要运行以下两个命令 sudo apt-get update sudo apt-get install build-essential ...

    flex&bison安装与简单使用

    1.wls安装

    这里使用的是wls,wls安装教程可以参考这一篇,亲测可用,安装后是自带gcc的,但是相关依赖没有,需要运行以下两个命令

    sudo apt-get update
    sudo apt-get  install  build-essential
    

    可能会遇到一些问题,可以广泛参考网上的错误解决方案~

    2.安装flex bison并尝试第一个flex程序

    在Ubuntu系统系统下安装flex bison,输入以下命令

    sudo apt-get install flex bison
    

    一会就装好了,然后我们尝试我们的第一个flex程序(feb1-1.l),该程序参考flex与bison中文版第二版(可以买来看看!)

    %{
    int chars = 0;
    int words = 0;
    int lines = 0;
    %}
    %%
    [a-zA-Z]+       {words++; chars+= strlen(yytext);}
    \n      {chars++; lines++;}
    .       {chars++;}
    %%
    main(int argc, char** argv){
    yylex();
    printf("%d,%d,%d\n", lines, words, chars);
    }
    

    这个程序就是C代码,flex程序包含三个部分,各个部分通过%%行进行分割

    • 第一部分是声明部分,%{和}%之间的代码会原样照抄到生成的C文件的开头部分,在上面的栗子中,我们使用其设定了行数、单词书与字符数的变量
    • 第二部分是模式匹配部分,学习过正则表达式的同学对着肯定不会陌生(这里就不对正则表达式做详细介绍了~),每一行的开始处对应一个模式(用一个正则表达式表示),后面是当模式匹配时会执行的C语言代码(变量yytext总是被设定为指向本次匹配输入的文本)
    • 第三部分是我们的主程序,它负责调用flex体用的词法分析例程yylex(),并输出结果。在没有其他改变的情况下,词法分析器将读取标准输入。

    我们首先编译flex生成C程序(lex.yy.c

    flex fb-1-1.l
    

    然后将它与相应的flex库文件(-lfl)链接,生成a.out

    cc lex.yy.c -lfl
    

    最后运行程序

    ./a.out
    

    尝试输入以下内容:

    The boy stood on the burning deck
    shelling peanuts by the peck
    

    输出为(行数、单词数、字符数)

    2,12,63
    

    0ODirQ.png

    对于flex正则表达式匹配的一些说明:

    • 默认贪婪匹配(匹配更长的字符串)
    • 优先匹配程序里先出现的模式

    3.让Flex和Bison协同工作

    我们现在需要完成一个简单的计算器

    首先使用编写一个简单的flex词法分析器,不显示的定义记号值,而是直接包含头文件,因为我们希望在语法分析器中直接调用它

    文件名:fb-1-5.l

    %{
    #include"fb-1-5.tab.h"
    int yylval;
    %}
    %%
    "+"     {return ADD;}
    "-"     {return SUB;}
    "*"     {return MUL;}
    "/"     {return DIV;}
    "|"     {return ABS;}
    [0-9]+  {yylval = atoi(yytext); return NUMBER;}
    \n      {return EOL;}
    [ \t]   {return EOL;}
    .       {printf("Mystery character %c\n", *yytext);}
    %%
    

    然后bison程序部分,bison的规则基本上就是BNF(可参考编译原理),bison程序和flex一样分成三部分:

    • 第一部分首先也是声明,会拷贝到目标程序开头,随后事%token标记声明,以便告诉bison在语法分析中的记号名称
    • 第二部分就是BNF定义的规则,使用单一的冒号:表示,和flex一样,匹配每一条规则后,就会执行后面用花括号括起来的动作代码,我们一般使用动作代码维护每个语法对应的符号关联语义值,目标符号的值在动作代码中用$$表示,右边语法符号的语义值依次为$1, $2…,直到这条规则结束。记号值总是存储在yyval中,这就对应我们上面的flex程序。
    • 第三部分就是主程序,运行我们的语法分析程序。

    文件名:fb-1-5.y

    %{
    #include<stdio.h>
    %}
    %token NUMBER
    %token ADD SUB MUL DIV ABS
    %token EOL
    %%
    
    calclist:
            | calclist exp EOL {printf("=%d\n", $2);}
            ;
    exp: factor
       | exp ADD factor {$$ = $1 + $3;}
       | exp SUB factor {$$ = $1 - $3;}
       ;
    factor: term
          | factor MUL factor {$$ = $1 * $3;}
          | factor DIV term {$$ = $1 / $3;}
          ;
    term:NUMBER
        | ABS term {$$ = $2 >= 0? $2 : -$2;}
        ;
    %%
    main(int argc, int **argv){
    yyparse();
    }
    yyerror(char *s)
    {
    fprintf(stderr, "error:%s\n", s);
    }
    

    然后联合编译flex与bison程序,由于编译的步骤比较复杂,所以我们写一个Makefile,运行vim Makefile, 写入如下内容

    fb-1-5:fb-1-5.l fb-1-5.y
            bison -d fb-1-5.y
            flex fb-1-5.l
            cc -o $@ fb-1-5.tab.c lex.yy.c -lfl
    

    然后我们编译:

    make
    

    得到程序fb-1-5,直接运行就可以了,一个简易的计算器就完成了~

    0OyXy8.png

    展开全文
  • 1. cpp文件生成 1.1 工具准备 从www.cygwin.org:http://cygwin.com/install.html... 执行setup.exe并选择flex/bison两个工具包 1.2 启动cygwin 启动桌面上的cygwin terminator,进入到.l与.y文件所在的路径. 1....
    1. cpp文件生成
       1.1 工具准备
          从www.cygwin.org:http://cygwin.com/install.html下载cygwin.
          执行setup.exe并选择flex/bison两个工具包
       1.2 启动cygwin
          启动桌面上的cygwin terminator,进入到.l与.y文件所在的路径.
       1.2 生成xqlexer.cpp
          在cygwin中执行 flex -L -oXQLexer.cpp XQLexer.l
       1.3 生成xqPaser.cpp
          在cygwin中执行 bison -l -d -o XQParser.cpp XQParser.y
    2. 添加用户命令
       以命令createdb为例,格式为createdb dbname;
       2.1 修改XQLexer.l
           打开XQLexer.l文件,
           在最后一个 行之后
           添加同样一行,修改为createdb { BEGIN COMMAND; return token::CREATEDB;}
           若参数中还有关键字,在行之后添加类似的行.
           保存文件,生成xqlexer.cpp,具体参见1.2
       2.2 修改XQPaser.y
           打开XQPaser.y, 
           在%token VERSION "version"类似行之后添加命令的标签, %token CREATEDB "createdb"
           在990行 SHOWVERSION sideoption下添加命令处理.命令参数为字符串的,用DName表示.参照我们的命令格式和现有的方式很容易理解
           | CREATEDB DName
           {
                XdbParserArg* arg = new XdbParserArg(); //创建返回对象
                $$ = arg; //返回值
                arg->cmd = createdb; //命令类型, 在utils/commandtype.h中定义
                arg->params.push_back($2); //加入参数值,参数值以1开始,因此为第2个
                delete $2; //DName为new出来的字符串,需要删除.
           }
           若命令中有些常量之类,请参考其他命令修改或添加.
           生成XQparser.cpp
    3. 修改用户命令
       按照修改要求对xqlexer.l, xqparser.y

    转载于:https://www.cnblogs.com/TawnieChen/p/3228464.html

    展开全文
  • GNU bison 是属于 GNU 项目的一个语法分析器生成器。Bison 把一个关于“向前查看 从左到右 最右”(LALR) 上下文无关文法的描述转化成可以分析该文法的 C 或 C++ 程序。它也可以为二义文法生成 “通用的 从左到右 最...

    GNU bison 是属于 GNU 项目的一个语法分析器生成器。Bison 把一个关于“向前查看 从左到右 最右”(LALR) 上下文无关文法的描述转化成可以分析该文法的 C 或 C++ 程序。它也可以为二义文法生成 “通用的 从左到右 最右” (GLR)语法分析器。Bison 基本上与 Yacc 兼容,并且在 Yacc 之上进行了改进。它经常和 Flex (一个自动的词法分析器生成器)一起使用。此软件的源代码是可自由获得的,在 GPL 下发布。Bison主要由Rovert Corbett编写。Richard Stallman使它与Yacc兼容。Carnegie Mellon大学的Wilfred Hansen为Bison添加了多字符字符串文字(multi-character string literals)和其它一些特性。

    2014年9月我们看到最新版本的bison是bison-3.0.tar.gz

    下载后就是编译安装了,cd /usr/local/src

    wget http://ftp.gnu.org/gnu/bison/bison-3.0.tar.gz

    tar -zxvf bison-3.0.tar.gz

    cd bison-3.0

    ./configure

    make

    make install

    展开全文
  • 使用brew install bison 安装新版的bison $ brew list bison /usr/local/Cellar/bison/3.0.4/bin/bison /usr/local/Cellar/bison/3.0.4/bin/yacc /usr/local/Cellar/bison/3.0.4/lib/liby.a /usr/local/Cellar/...
  • “高级设置”,在系统变量中将Bison安装路径下的bin目录加入Path中。 输入组合键“win+R”,输入“cmd”打开命令终端,输入bison -V查看bison是否安装成功。 至此,Bison安装完成,可以在命令行使用bison进行语法...
  • bison安装程序

    2018-06-17 12:11:09
    Yacc是linux下的工具,使用的编译工具是cygwin(cygwin在windows下模拟一个linux环境)下的bison.
  • max os安装bison

    千次阅读 2019-09-07 17:48:54
    Mac os下安装bison 1、brew install bison 2、bison -V 如果发现版本未变更 执行如下命令 brew unlink bison echo ‘export PATH="/usr/local/opt/bison/bin:$PATH"’ >> ~/.bash_profile export LDFLAGS="-L/...
  • Ubuntu 18.04.5 安装 flex + bison | 测试运算环境与配置安装flex与bison测试运算 环境与配置 采用 win10 下的Ubuntu 18.04.5,具体版本如下: 安装flex与bison 首先更新一些包用于安装flex与bison,否则后续很容易...
  • Mac安装thrift因bison报错的解决办法

    万次阅读 2016-01-04 19:41:36
    安装thrift时,报错: Bison version 2.5 or higher must be installed on...使用brew install bison 安装新版的bison $ brew list bison /usr/local/Cellar/bison/3.0.4/bin/bison /usr/local/Cellar/bison/3.0.4/
  • Ubuntu下Flex&Bison安装

    2021-05-29 08:54:24
    Flex 安装安装测试安装成功Bison & Flex Bison & Flex 安装 安装 打开Ubuntu。打开Terminal 快捷键 Ctrl+Alt+T。 输入安装命令 sudo apt-get install flex bison~$ sudo apt-get install flex bison ...
  • ![图片说明](https://img-ask.csdn.net/upload/201907/06/1562402662_846314.png) 通过sudo apt-get install flex bison 安装的。
  • bison

    2019-09-12 22:26:39
    http://ftp.gnu.org/gnu/bison/安装bison需要先安装 msys下的flexhttp://sourceforge.net/projects/mingw/files/MSYS/Extension/flex/(flex-2.5.35-2-msys-1.0.13-bin....
  • Windos下bison安装

    2013-08-26 10:08:41
    bison是专门将GNU的工具移植到windows下的工程,下载目录为:http://gnuwin32.sourceforge.net/packages/bison.htm;但我个人在公司却不能打开,所以...将其下载之后,按照默认路径安装安装完成后,设置环境变量,我
  • 【编译原理】windows8.1下安装配置flex,bison和gnu-gcc编译器编译原理windows81下安装配置flexbison和gnu-gcc...flexbison安装配置完成的检验 gnu-gcc的安装配置 1为什么要配置windows下的gcc compiler 2下载安装gcc
  • 1.在ubutu上安装 yacc的命令: sudo apt-get install flex bison flex:词法分析器  flex是一个词法分析器。用来将一个.l文件生成一个.c程序文件。即生成一个词法分析器。然后读取输入,和正则表达式匹配,再...
  • Ubuntu安装flex和bison

    万次阅读 2018-03-10 20:29:48
    考虑到在windows下用这两个玩意还要安装masm,所以最后决定上虚拟机(之前操作系统课就装过了,幸亏没卸载哈哈哈)。Ubuntu下使用sudo apt-get install flex bison命令,不一会就装好了,如图:然后写了一个测试...
  • ubuntu下安装flex和bison

    千次阅读 2019-03-09 14:15:58
    做编译原理作业时需要用到flex和bison,于是在Linux下安装了flex和bison apt install flex bison
  • win7下面安装flex和bison

    2019-08-03 22:28:34
    通过Cygwin工具进行安装 下载地址cygwin 安装截图: ...搜索flex,选择相应的版本进行安装 ...搜索bison ...至此就完成了flex和bison安装,在cmd中就可以使用flex和bison命令了 转载于:https://w...
  • Linux下安装: sudo apt-get install flex bison flex -h bison -h Windows下安装: Flex下载地址:http://gnuwin32.sourceforge.net/packages/flex.htm Biosn下载地址:...
  • windows下安装flex与bison

    2019-10-06 19:51:22
    首先先下载felx/bison for windows flex:http://gnuwin32.sourceforge.net/packages/flex.htm bison:http://gnuwin32.sourceforge.net/packages/bison.htm 没有额外需要的话直接下载Binaries压缩包就行了。 ...
  • sudo dnf instal flex bison 下面先开始测试flex 编辑test.l %option noyywrap //增加的语句 %{ int chars = 0; int words = 0; int lines = 0; %} %% [a-zA-Z]+ {words++; chars+= strlen(yytext);} \n {chars++; ...
  • 任务:在ubuntu虚拟机中下载安装flex和bison 工具版本:Virtual Box6.1; Ubuntu16 BUG描述: 输入命令 sudo apt-get install flex bison 报错: 解决方案: flex和bison属于较早的软件,在ubuntu默认的源中没有相应...
  • 在windows下安装flex和bison

    万次阅读 2016-05-22 09:45:51
    这两天为了项目而要学习一下编译原理中要用到得两个工具,flex和bison。这两个软件是可以在windows下运行和编译得,之前也在网上查了不少资料,终于昨天下载了下来。今天来安装,装完了不知道要怎么运行,于是又上网...
  • Windows下安装Flex和Bison及环境配置

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,876
精华内容 11,150
关键字:

bison安装