bison 相关问题

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

为什么 vscode 扩展“Lex Flex Bison Yacc”不突出显示 .y 文件中的代码?

我的 vscode Windows 版本是 1.39.2。在我的 .y 文件中,代码未正确突出显示。两个“%%”之间的代码没有高亮。

回答 1 投票 0

为什么类型无法识别以及为什么会出现分段错误? [重复]

我正在开发一个涉及编译器或解释器的抽象语法树 (AST) 结构的 C 项目。该项目旨在解析编程语言并生成 co...

回答 1 投票 0

C 代码中的 AST 结构问题导致编译错误和分段错误并且无法识别定义的类型

我正在开发一个涉及编译器或解释器的抽象语法树 (AST) 结构的 C 项目。该项目旨在解析编程语言并生成 co...

回答 1 投票 0

Bison 解析器转移/减少冲突

我是 Bison 新手,我正在尝试编写一个解析器。我已经用 Flex 写了一个扫描仪。我为解析器提出了以下语法: % 代币数量 %代币标识符 %启动程序 %% 程序...

回答 1 投票 0

处理 Bison 解析器中的多个错误

我正在开发一个项目,其中有一个可以解析自定义语言的 Bison 解析器。我遇到了一个问题,解析器在遇到输入文件中的第一个错误后停止,但我需要......

回答 1 投票 0

Flex 和 Bison 未创建头文件 (.h)

所以对于我的最终项目,我需要使用 flex 和 bison 编写一个解析器。我已将其下载到我的路径中,并且能够运行所有命令。唯一的问题是,当我运行以下命令时,.y ...

回答 1 投票 0

如何从 LALR 语法中的 Bison 错误中恢复?

我正在尝试找出如何正确从 Bison 中的错误中恢复。问题是,当输入正确时,一切正常,直到输入错误为止。在这种情况下,它决定所有下一个 inp...

回答 1 投票 0

为什么我的解析器在更改另一部分时会错误地读取一部分?

我在 lex 文件中定义了这些标记: (?xi: ADC|AND|ASL|位|BRK|CLC|CLD|CLI|CLV|CMP|CPX| DEY|EOR|INC|INX|INY|JMP|JSR|LDA|LDX|LDY|LSR| NOP|ORA|PHA|PHP|PLA|PLP|ROL|ROR|RTI|RTS|SBC| ...

回答 1 投票 0

为什么bison不符合这个语法规则?

我有这些 lex 令牌: ,[Yy] { 返回COMMAY; } (?xi: ADC|AND|ASL|BCC|BCS|BEQ|BIT|BMI|BNE|BPL|BRK| BVC|BVS|CLC|CLD|CLI|CLV|CMP|CPX|CPY|DEC|DEX| DEY|EOR|INC|INX|INY|JMP|JSR|LDA|LD...

回答 1 投票 0

在 Windows 上运行 bison 时出错“冲突:1 个移位/减少,1 个减少/减少 C:\GnuWin32 in ison.exe: m4: 无效参数”

第一次学习 lex yacc。 但 bison 中没有代码正在运行 错误:ison.exe 中的 C:\GnuWin32:m4:参数无效 我重新安装了野牛检查了路径,但错误仍然没有消失。 索梅特...

回答 1 投票 0

Bison/flex 语法问题

我无法编写解析此 yaml 的正确语法: - 名称:Qwerty 价值观: - 姓名:QQ - 姓名:pp - 姓名:奇里克 价值观: - 姓名:zzz - 姓名:瓦斯德 价值观: - 姓名:yyy ...

回答 1 投票 0

这是内存分配问题吗?

我最近一直在研究一种客户编程语言,我已经使用c flex(词法分析器生成器)和bison(解析器生成器)将数组和变量之类的东西实现到了客户语言中,我

回答 1 投票 0

yacc/bison 的分段错误

我正在尝试为学校作业编写一个简单的 HTTP 请求解析器,但我遇到了无法摆脱的分段错误。我认为我的生产规则没问题。我已经处决了野牛...

回答 3 投票 0

Bison - 转移/减少冲突

在写完表达式语法后,我遇到了 3 个转变/减少冲突。数学运算表达式很好,但是当我编写“TOKEN_MINUS 表达式 %prec UMINUS”语句时,有...

回答 1 投票 0

处理野牛中的歧义

https://pastebin.com/eMAJA9RV 我正在上面的链接中使用 Bison 语法(它是旧版本开源 flasm 项目的分叉副本的一部分,我不会详细说明原因......

回答 2 投票 0

2处解析器错误:语法错误,意外的id,期待$end

我有一个语法文件:它是简单表达式的语法。 %{ #包括 #包括 #包括 #include“../C_routines/SyntaxTree.h” #定义

回答 1 投票 0

Bison 解析器总是打印语法错误而不指定错误所在

大家好,我正在尝试为这个简单的java简单文件编写一个解析器,基本上我希望这个解析器能够识别和验证指令块。找到正确的指令块后,该值...

回答 1 投票 0

bison生成的规则文件的覆盖范围

我有一个非常巨大的野牛规则文件,想知道是否有一种简单的方法可以从后面的程序中获取这些规则的覆盖范围。 我用 bison 生成了一个解析器。针对 diff 运行解析器...

回答 2 投票 0

解析器错误 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

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