bison 相关问题

Bison是GNU解析器生成器。它生成LALR解析器,但也可以为非LALR的语法生成GLR解析器。它具有与其旧前任Yacc(另一个编译器编译器)兼容的模式。

解析器错误 1:yacc 语法的语法错误

我在 yacc (bison) 中有一个简单的语法: 表达式.y: %{ #包括 #包括 #包括 #include“../C_routines/SyntaxTree.h” 外部 int yyli...

回答 1 投票 0

Bison 中的一元优先级

当解析器试图弄清楚某物是一元运算符还是二元运算符时,我不断遇到移位/归约冲突。 %token tHEX 到 OCT tDEC tRUNE %代币 当解析器试图弄清楚某物是一元运算符还是二元运算符时,我不断遇到移位/归约冲突。 %token <intconst> tHEX tOCT tDEC tRUNE %token <stringconst> tBOOL INTERPRETEDSTRING RAWSTRING tIDENTIFIER %token <floatconst> tFLOAT %token <charconst> tRUNES %token TRUE FALSE BREAK CASE CHAN CONST CONTINUE DEFAULT DEFER ELSE FALLTHROUGH FOR FUNC GO GOTO IF IMPORT INTERFACE MAP PACKAGE RANGE RETURN SELECT STRUCT SWITCH TYPE VAR INT PRINT FLOAT PRINTLN BOOL APPEND RUNE STRING SEMICOLON NEWLINE PLUS MINUS TIMES DIV MOD AMP PIPE CARAT COUT CIN AMPCARAT SELFPLUS SELFMINUS SELFTIMES SELFDIV SELFMOD AMPEQUALS PIPEEQUALS CARATEQUALS COUTEQUALS CINEQUALS WTF AND OR REDIRECT INCREMENT DECREMENT DOESEQUALS LT GT EQUALS NOT NEQ LE GE COMPAT ELLIPSIS LEFTPAREN RIGHTPAREN LEFTSQUARE RIGHTSQUARE LEFTBRACE RIGHTBRACE COMMA PERIOD FULLCOLON ESCAPEA ESCAPEB ESCAPEF ESCAPEV ESCAPESLASH ESCAPEAPOSTROPHE INVALID /*%token unary*/ /*%token binary*/ %left OR %left AND %left DOESEQUALS NEQ GT GE LT LE %left PLUS MINUS PIPE CARAT %left TIMES DIV MOD COUT CIN AMP AMPCARAT /*%left binary*/ %left UPLUS UMINUS UNOT UCARAT UTIMES UAMP UPAREN %start expList %% expList: exp expList {} | /*empty*/ ; exp: exp OR addOp {} | exp AND addOp {} | exp NEQ addOp {} | exp GT addOp {} | exp GE addOp {} | exp LT addOp {} | exp LE addOp {} | addOp {} ; addOp: addOp PLUS mulOp {} | addOp MINUS mulOp {} | addOp PIPE mulOp {} | addOp CARAT mulOp {} | mulOp {} ; mulOp: mulOp TIMES factor {} | mulOp DIV factor {} | mulOp MOD factor {} | mulOp COUT factor {} | mulOp CIN factor {} | mulOp AMP factor {} | mulOp AMPCARAT factor {} | factor {} ; factor: LEFTPAREN exp RIGHTPAREN %prec UPAREN {} | PLUS factor %prec UPLUS {} | MINUS factor %prec UMINUS {} | NOT factor %prec UNOT {} | CARAT factor %prec UCARAT {} | TIMES factor %prec UTIMES {} | AMP factor %prec UAMP {} | tIDENTIFIER {} | tDEC {} | tFLOAT {} | tOCT {} | tHEX {} | tRUNES {} | INTERPRETEDSTRING {} | RAWSTRING {} ; %% 我知道我有很多代币,我最终会使用它们。我只是想让表达式的语法起作用。 这是我遇到的移位/归约错误 State 18 10 exp: addOp . 11 addOp: addOp . PLUS mulOp 12 | addOp . MINUS mulOp 13 | addOp . PIPE mulOp 14 | addOp . CARAT mulOp PLUS shift, and go to state 37 MINUS shift, and go to state 38 PIPE shift, and go to state 39 CARAT shift, and go to state 40 PLUS [reduce using rule 10 (exp)] MINUS [reduce using rule 10 (exp)] CARAT [reduce using rule 10 (exp)] $default reduce using rule 10 (exp) State 19 15 addOp: mulOp . 16 mulOp: mulOp . TIMES factor 17 | mulOp . DIV factor 18 | mulOp . MOD factor 19 | mulOp . COUT factor 20 | mulOp . CIN factor 21 | mulOp . AMP factor 22 | mulOp . AMPCARAT factor TIMES shift, and go to state 41 DIV shift, and go to state 42 MOD shift, and go to state 43 AMP shift, and go to state 44 COUT shift, and go to state 45 CIN shift, and go to state 46 AMPCARAT shift, and go to state 47 TIMES [reduce using rule 15 (addOp)] AMP [reduce using rule 15 (addOp)] $default reduce using rule 15 (addOp) 我已经没有想法了,非常感谢我能得到的任何帮助。 不确定以下内容有多大帮助,但这样的东西对我有用: exp : '(' exp ')' | unary_exp | exp bin_op term | exp bin_op unary_exp | term unary_exp : u_op exp %prec FIRST term : CONSTANT | NUM bin_op : '+' | '-' | '*' | '/' u_op : '-' 了解更多关于 prec 有了优先级和关联性指令,您应该从简化语法开始,让它们发挥作用,并检查仍然出现哪些冲突... exp: exp OR exp {} | exp AND exp {} | exp NEQ exp {} | ... | exp PLUS exp {} | ... | exp '*' exp {} | '(' exp ')' {} | MINUS exp %prec UMINUS {} | ... | tDEC {} | ... ;

回答 2 投票 0

Bison 自动生成语法图

我想找到一个从野牛源文件自动生成语法图的工具。有谁知道这样的工具吗?这是一篇类似的帖子,但答案给我留下了太多问题: ...

回答 1 投票 0

错误:请求非结构或联合中的成员“代码”

我有 lex 和 yacc 文件。 lex - tokens.l yacc - 表达式.y 我使用 flex 作为 lex,使用 bison 作为 yacc 表达式.y: %{ #包括 #包括 #包括 #在...

回答 1 投票 0

我怎样才能获得当前flex/lex正在词法分析的行以在yyerror中使用它?

我正在使用 flex+bison 作为工具包开发简单的 aql 解析器。现在,我正在尝试在发生语法错误时提供有用的反馈。我想向用户展示这样的想法: 语法错误...

回答 1 投票 0

如何解决 bison 文件中的歧义?

我正在开发一个简单的解释器,我正在使用 bison 和 flex 作为我的词法分析器和解析器。在解析器方面我遇到了问题: progr :decl_classes decl_gvars decl_functions 块 {

回答 1 投票 0

安装的 Bison 版本 /c/Program Files (x86)/GnuWin32/bin/bison 太旧,无法与 PostgreSQL 一起使用

我正在尝试通过从 Github 克隆 PostgreSQL 的源代码在我的 Windows 笔记本电脑上运行 PostgreSQL。 为此,我正在关注此文档 但是在尝试运行 ./configure 命令时我是

回答 1 投票 0

Flex+ Bison 集成错误:杂散的 '\' 和预期的 ';'在“{”标记之前

我在 Flex 和 Bison 集成方面遇到问题,特别是与“程序中的杂散`\`”和“预期的 ';' 等错误相关在‘{’标记之前。”我检查了我的代码...

回答 1 投票 0

我在 Flex/Bison 的 C 程序中遇到语法错误

我正在为我的编译器课程做我的项目,我终于完成了它和它的编译器,但我不断收到语法错误,我不知道为什么!我尝试使用差异来源来看看我能做什么......

回答 1 投票 0

编译器中的Yacc和Lex,“和”?

为什么 yacc 和 lex 是分开的? 我的意思是为什么 C 程序员不把它们设计在一起呢? 例如,我们可以一起制作lex-yacc工具吗?

回答 1 投票 0

Makefile自动调用`yacc`

嗨我有一个像这样的makefile: # 变量================================================== ======================================= 假货 = 项目= ALL_FILES := $(过滤 $(pr...

回答 2 投票 0

为什么我在我的 Lexer 程序中收到此警告“规则无法匹配”

我在flex程序“.l”中有这段代码 “if”{return IF;}“else”{return ELSE;}“For”{return FOR;} 。 {printf("语法错误..退出..");退出(0);} 一个...

回答 1 投票 0

Bison-Flex extern FILE *yyin 不起作用(C 语言)

我知道在flex中你只需要做 yyin = fopen(filename, "r");读取文件,但如果你想从 bison 读取文件,这怎么可能呢?我正在尝试将 Flex 和 Bison 结合起来以达到我的目的(阅读...

回答 1 投票 0

减少/减少冲突野牛语法

我是野牛解析的新手,我不完全理解它是如何工作的。我有以下简单的野牛语法来解析简单的语言: %{ %} %token T_ASSIGN T_ADD T_SUB T_MUL T_DIV T_MOD T_POW %

回答 1 投票 0

构建 gcc 4.6 时遇到问题:对 `yylex' 的未定义引用

我正在尝试构建 gcc 4.6,但我收到一些链接器错误,看起来这意味着 bison 或 flex 没有链接到。当 makefile 发出此命令时: gcc -g -fkeep-inline-functio...

回答 3 投票 0

Doxgen 使用过时版本的 bison OSX Big Sir

我正在尝试使用 Doxygen 为我的代码创建文档。按照 Doxygen 文档,当我运行 cmake -G "Unix Makefiles" .. 编译器告诉我 CMakeList 中的 CMake 错误...

回答 4 投票 0

Yacc/Bison yyerror

我正在尝试创建自己的错误,但显然,调用 yyerror() 不足以告诉解析器存在错误。我做了一个小例子来更好地描述我的问题。 所以这是一个解析...

回答 3 投票 0

使用 Thrift 合约中的自定义注释生成 json

我需要帮助从 Thrift 合约生成 json。 例如,我有这样一个entities.thrift # 实体名称 结构体实体{ 1: string id, # id字段的注释 2:字符串名称,#Co...

回答 1 投票 0

如何使用 Flex 强制执行空格分隔?

如何在 Flex 中强制关键字以空格分隔? 例如,如果猫和狗是关键字,那么猫狗应该被接受,但猫狗不应该被接受。 使用尾随 con...

回答 1 投票 0

如何在windows上编译lex文件?

我已在 C:\ 中正确下载并安装了 flex、bison 和 Dev C++。然后我尝试在命令提示符下编译 myfile.l,但出现错误: Flex:无法打开 myfile.l。 什么是专业...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.