标签: bison

Antlr的优势(相比之下,lex/yacc/bison)

我过去曾经使用过lex和yacc(更常见的是bison)用于各种项目,通常是翻译(例如EDIF的子集流入EDA应用程序).另外,我必须支持基于几十年前的lex/yacc语法的代码.所以我知道我的工具,虽然我不是专家.

我在过去的各种论坛上看过关于Antlr的积极评论,我很好奇我可能会缺少什么.因此,如果您同时使用了两者,请告诉我Antlr中哪些更好或更先进.我目前的限制是我在C++商店工作,我们发布的任何产品都不包含Java,因此生成的解析器必须遵循该规则.

c++ yacc antlr bison

134
推荐指数
5
解决办法
4万
查看次数

Flex/Lex和Yacc/Bison有什么区别?

Flex&Lex和Yacc&Bison有什么区别.我疯狂地搜索了互联网,但没有找到任何可靠的答案.

我可以在Ubuntu上安装纯Lex和Yacc,或者我只能安装flex和bison.我很迷惑.

  • Lex或Yacc仍然由某人维护吗?
  • 他们都是免费的吗?
  • 如果Lex不是免费的,为什么我要在我的Ubuntu发行版上安装它?

    lex --version
    lex 2.5.35
    
    Run Code Online (Sandbox Code Playgroud)

parsing yacc lex bison flex-lexer

117
推荐指数
4
解决办法
4万
查看次数

是否有可用于8位嵌入式系统的flex/bison的替代方案?

我正在编写一个小型解释器,用于简单的BASIC语言,使用avr-gcc工具链在C语言的AVR微控制器上练习.但是,我想知道是否有任何开源工具可以帮助我编写词法分析器和解析器.

如果我写这个在我的Linux机器上运行,我可以使用flex/bison.现在我把自己限制在一个8位平台上,我必须手动完成所有操作,不是吗?

embedded parsing bison avr-gcc flex-lexer

80
推荐指数
3
解决办法
6万
查看次数

问题调用std :: max

我在Visual Studio中编译了我的bison生成的文件并得到了以下错误:

...\_ position.hh(83):错误C2589:'(':'::'
...\_ position.hh(83)右侧的非法令牌:错误C2059:语法错误:'::'
. ..\_ position.hh(83):错误C2589:'(':'::'
...\_ position.hh(83)右侧的非法令牌:错误C2059:语法错误:'::'

相应的代码是:

inline void columns (int count = 1)
{
  column = std::max (1u, column + count);
}
Run Code Online (Sandbox Code Playgroud)

我认为问题出在std :: max; 如果我将std :: max更改为等效代码,那么就没有问题了,但有没有更好的解决方案而不是更改生成的代码?

这是我写的野牛文件:

//
// bison.yy
//

%skeleton "lalr1.cc"
%require "2.4.2"
%defines
%define parser_class_name "cmd_parser"
%locations
%debug
%error-verbose

%code requires {
class ParserDriver;
}

%parse-param { ParserDriver& driver }
%lex-param { ParserDriver& driver }

%union {
    struct ast *a;
    double d;
    struct symbol *s;   
    struct symlist *sl;
    int …
Run Code Online (Sandbox Code Playgroud)

c++ windows bison visual-c++

56
推荐指数
2
解决办法
2万
查看次数

字符串输入到flex lexer

我想使用flex/bison解析器创建一个read-eval-print循环.麻烦的是,flex生成的词法分析器需要输入FILE*类型,我希望它是char*.反正有没有这样做?

一个建议是创建一个管道,将其提供给字符串并打开文件描述符并发送给词法分析器.这很简单,但感觉很复杂,而且与平台无关.有没有更好的办法?

c yacc lex bison flex-lexer

52
推荐指数
5
解决办法
3万
查看次数

如何在Windows上编译LEX/YACC文件?

我有LexYACC文件来解析我的文件(.l文件和.y文件).

如何编译这些文件以及如何.c在Windows平台上为它们创建等效文件?

windows yacc lex bison flex-lexer

51
推荐指数
5
解决办法
13万
查看次数

如何解决Bison警告"......没有声明类型"

在此文件上运行Bison:

%{
    #include <iostream>
    int yylex();
    void yyerror(const char*);
%}


%union
{
    char    name[100];
    int     val;
}

%token NUM ID
%right '='
%left '+' '-'
%left '*'

%%

exp :   NUM     {$$.val = $1.val;}
    | ID        {$$.val = vars[$1.name];}
    | exp '+' exp   {$$.val = $1.val + $3.val;}
    | ID '=' exp    {$$.val = vars[$1.name] = $3.val;}
;

%%
Run Code Online (Sandbox Code Playgroud)

导致出现以下类型的警告:

警告:'exp'的$$没有声明的类型.

它是什么意思,我该如何解决?

bison

43
推荐指数
2
解决办法
3万
查看次数

麻烦构建gcc 4.6:未定义引用`yylex'

我正在尝试构建gcc 4.6,但是我收到了一些链接器错误,看起来这意味着bison或flex没有被链接到.当makefile发出以下命令时:

gcc   -g -fkeep-inline-functions -DIN_GCC   -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common  -DHAVE_CONFIG_H -DGENERATOR_FILE  -o build/gengtype \
        build/gengtype.o build/errors.o build/gengtype-lex.o build/gengtype-parse.o build/version.o ../../build-x86_64-unknown-linux-gnu/libiberty/libiberty.a
Run Code Online (Sandbox Code Playgroud)

它告诉我:

/home/chris/code/gcc/trunk/host-x86_64-unknown-linux-gnu/gcc/../.././gcc/gengtype.c:960: undefined reference to `lexer_line'
... undefined reference to `yylex'
... undefined reference to `yybegin'
... undefined reference to `yyend'
Run Code Online (Sandbox Code Playgroud)

我已经安装了Flex和Bison,甚至尝试了几种具有相同结果的Bison变体.有谁知道这可能意味着什么?

gcc makefile bison

31
推荐指数
1
解决办法
1万
查看次数

将Bison/Flex/Yacc集成到XCode中

有没有一种简单的方法将Bison/Flex/Yacc集成到XCode中?

我想编写自己的语言进行解析,它与我的ObjC对象进行交互.

但这些工具只会将STDIN作为输入,而只会生成C代码而不是ObjC.它们基本上只对命令行工具有用,否则每次重新生成解析器代码时都需要大量的痛苦来覆盖输出.

xcode parsing yacc objective-c bison

31
推荐指数
3
解决办法
8330
查看次数

如何在mac OSX上安装bison

我正在尝试在我的macbook上安装Thrift.否则我收到一个错误:

configure:error:必须在系统上安装Bison 2.5或更高版本!

所以试图在我的操作系统上安装Bison,但我没有在互联网上找到教程.有谁能告诉我如何在我的系统上安装Bison?

亲切的问候

macos thrift bison

25
推荐指数
4
解决办法
2万
查看次数

标签 统计

bison ×10

yacc ×5

flex-lexer ×4

lex ×3

parsing ×3

c++ ×2

windows ×2

antlr ×1

avr-gcc ×1

c ×1

embedded ×1

gcc ×1

macos ×1

makefile ×1

objective-c ×1

thrift ×1

visual-c++ ×1

xcode ×1