问题标签 [bisonc++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
88 浏览

c++ - 在 bisoc++ 中正确接受括号

我尝试使用编写一个基本的语法检查器bisonc++

规则是:

如果我尝试运行编译后的代码,我会在这一行得到一个错误:

应用第一条规则,最左边和最右边的括号是 theOPEN_BRACKETCLOSE_BRACKET。剩下expression的是:a+b)-(c+d

如何防止这种行为?是否可以计算开括号和闭括号?


编辑

表达式语法:


编辑2

词法分析器

0 投票
2 回答
1232 浏览

c++ - 在使用 GDB 进行调试时,如何知道 bison 中变量的值?

我正在尝试编写一个可以解析我键入的一些命令的小型编译器。

我尝试解析的命令是:

我的代码将是这样的:

但是,当我尝试在其他地方调用解析器时,我无法获得Class我之前定义的。

我想解析器一定有问题,并且已经用 GDB 做了一些调试。但我就是无法进入功能,也无法正确push_back()打印信息。obj

所以,我想知道是否有一种方法可以让我在使用 GDB 时$$获得价值。$1只需输入p $$将打印其他内容。

0 投票
1 回答
100 浏览

grammar - Bison/Lemon 文件的语法或规范

我需要为 Bison 和 Lemon 语法文件编写解析器。我正在寻找这些文件格式的规范或语法。任何链接都会有所帮助。

0 投票
2 回答
567 浏览

bisonc++ - bisonc++ - 没有生产规则?

我正在尝试使用 bisonc++ 编译以下内容:

但是,它不断返回错误

我显然有一些生产规则,不知道我做错了什么。我从另一个工作示例中复制了大部分代码,并根据自己的喜好对其进行了修改。怎么了?

0 投票
1 回答
35 浏览

bisonc++ - Bisonc++ - 返回冲突规则的详细报告?

我对 bisonc++ 的编译器有一个大问题:错误消息是垃圾。我真的很难找到问题所在,当它说的只是Line 63: 2 Reduce/Reduce conflict(s)(第 63 行是代码的最后一行)。有没有办法、开关或任何东西让 bisonc++ 也返回导致冲突的规则?任何详细的错误报告?谢谢!

0 投票
1 回答
253 浏览

c++ - 具有多态性的 bisonc++ 继承

我正在尝试从野牛语法构造一个 AST。Bison 正确生成解析器,但是当我尝试使用一些数学运算解析示例代码时,会打印以下错误:

调试后,我注意到问题出在expr非终端,具有以下产品:

operator具有以下生产本身:

我正在使用多态语义类型,expr并被operator标记为EXPR响应ExprASTNode类型,女巫是IntASTNode带有 tag的基类INT。我猜野牛正在从标签中获取类型并在进行任何演员之前检查标签。有什么办法可以解决这个问题吗?

0 投票
1 回答
505 浏览

bison - flex/bison 第 25 行:'' 处的语法错误。文件的最后一行

我试图编译一个弹性项目,但我总是得到同样的错误,我搜索所有 SO,并尝试大多数解决方案,比如使用令牌 <> 并返回 1 或 0,或者调用 yywrap()... 但是没有运气。

而且我没有看到错误在哪里,我有 84 个关于班次/减少冲突的警告,但这可能是问题所在。

这是tokens.l:

这是 parser.y:

我用来尝试所有令牌的测试程序是下一个:

我总是在最后一行得到错误:第 25 行:'' 处的语法错误,但我不知道这是什么意思,因为我有一个空格标记,EOF 的标记不起作用,我尝试使用 << EOF >> {yywrap();} 但它没有完成。

0 投票
0 回答
181 浏览

c++ - 结合 Flexc++ 和 Bisonc++

我正在使用Flexc++Bisonc++来实现一种小语言。

Flexc++ 提供了一个简单的构造函数

设置输入和输出文件。

但是,当与 Bisconc++ 集成时,我找不到一种简单的方法来将此构造函数用于生成的解析器中的扫描仪对象。

自动生成的 Parser.h 包含扫描仪对象:

默认情况下,解析器类没有带有输入/输出参数的构造函数,解析函数没有参数。默认行为是从标准输入解析并输出到标准输出。

我所寻求的与这个问题基本相同(见 2),但答案并没有真正涵盖这个标准。

目前我从标准输入解析

相反,我想指定一个文件路径并将其提供给解析函数甚至构造函数。

当然我可以在解析器生成之后添加功能,但这并不是最好的选择,因为一切都应该自动生成。

我看不到如何使用提供的 .ih 头文件来执行此操作。

是的,我想使用 Flexc++ 和 Bisonc++。

0 投票
1 回答
282 浏览

compiler-construction - 如何为每个规则野牛采取行动

我正在尝试使用 flex 和 bison 制作一个小型编译器,但我不知道如何为每条规则执行操作

我的语法是这样的:

变量正则表达式是 [a-zA-Z0-9]

“caps”是我的关键词

如果我将输入作为“大写锁定”(caps =KEYWORD 和 lock =VARIABLE),我得到的输出是“B”

如果我将输入作为大写字母,那么它会等到我输入下一个单词,并且在输入任何下一个单词后,如果下一个输入是大写字母,它会打印“Asyntax error”。

问题是它会等到下一个输入给出打印 A 并且如果存在语法错误的错误,它仍然会打印 A

我没有得到它有什么问题,有人可以找到它的错误。

0 投票
1 回答
1087 浏览

c++ - 将值从 flex 传递给 bison

我正在尝试在从 flex 发送的野牛中打印令牌值,但由于某种原因,打印的值在某些情况下是垃圾。

法典代码:

野牛代码:

如果我输入长度小于 15 个字符的字符串,则输出正常,但如果长度超过它,则会打印垃圾。

如果我隔离 c++ 代码并运行它工作正常,我不明白为什么会发生,所以有人可以找到其中的错误。