问题标签 [bison]

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 投票
13 回答
6192 浏览

c++ - 使用 flex/yacc 编写 C++ 编译器需要多少时间?

使用 lex/yacc 编写 C++ 编译器需要多少时间?

我可以从哪里开始?

0 投票
2 回答
1720 浏览

compiler-construction - 如何解析野牛中的if语句

我正在使用野牛为一种简单的语言构建编译器。这是语法的一部分:

我在解析这个 if 语句时遇到了一个问题:假设我有这个代码:

无论如何都会打印“hi”,因为 stmt->PRINT 在 stmt-> IF (exp) stmt 之前被解析。我能做些什么?(我是野牛和编译的新手,所以请随时纠正我的问题中的错误)。

0 投票
4 回答
1052 浏览

user-interface - 如何为我的编译器创建一个 gui?

我使用 flex 作为词法分析器,使用 bison 作为解析器生成器,但是两者的结果都是控制台窗口,我想要一个 gui(如 ide),所以如何做到这一点。谢谢

0 投票
1 回答
398 浏览

c - 在 Bison 中使用 $n 表示 n < 0

Bison 有没有办法检查当前的令牌堆栈大小?

我想使用$nn作为负数来访问另一个规则的语义值,但前提是堆栈足够大。

谢谢你。

0 投票
1 回答
3293 浏览

bison - Bison 下 Shift/reduce 与类 C 语法的冲突

为了我的个人娱乐,我一直在研究一种类似 C 的语法。但是,我一直在遇到 shift/reduce 冲突,我很确定它们可以得到解决。

现在我expressions看起来像这样,以简化的形式,剥离了动作:

但是,这会导致移位/减少冲突:解析器不确定如何处理括号。据我-v所知,尚不清楚 like 表达式是否expr '+' expr '('应该减少或expr '+' expr移动expr括号。

显然,我希望括号移动。foo % bar(4)不应该最终成为(foo % bar)(4). 但是,我没有成功使用该%prec指令来表示这个意思。在规则之后添加%left FUNCALLand%prec FUNCALL不会产生任何变化。

我知道 Bison 的 LALR 解析器在遇到 shift/reduce 时的默认路径是 shift,我可以用它%expect解决问题。但是,每个表达式都会产生一个冲突,我是否需要更改该列表,我还需要更改%expect声明,这对我来说似乎是一个相当丑陋的解决方案。此外,我相信你们中的一个聪明的孩子有解决这个问题的办法。

我的目标是有一个类似于上面的规则,Bison 会知道,每当它遇到'('from 函数调用规则时,它都会移动括号,而不会发生移位/减少冲突。作为记录,我对%prec指令的使用如下,所以如果我做错了,你可以纠正我。它确实存在移位/减少冲突。

0 投票
1 回答
960 浏览

parsing - 我如何告诉 Bison 我也期望减少减少冲突?

我的 C#-ish 玩具语法现在有了它的第一个 reduce-reduce 冲突!我为我感到骄傲。

然而,这对我来说似乎没问题(我为此关闭了 GLR 解析器)。问题是,虽然我知道该%expect指令可以关闭 Bison 关于移位/减少冲突的信息,但我找不到减少/减少冲突的等价物。那么我应该用什么来让它对我的 3 班次/减少和我的 2 次减少/减少保持沉默?

0 投票
2 回答
8196 浏览

bison - 在哪里可以找到关于 flex 和 bison 的真实示例?

我需要一个关于 flex 和 bison 的例子,所以我可以学习如何构建 ast 树和符号表并进行语义分析

0 投票
2 回答
2042 浏览

c++ - 如何编写野牛文件以自动使用 C 头文件中定义的令牌枚举列表?

我正在尝试使用 Bison/Yacc 构建一个解析器,以便能够解析另一个模块完成的令牌流。令牌已在枚举类型中列出,如下所示:

我已经多次阅读了 bison 的文档,但我找不到比复制 Bison 文件中的每个令牌更好的解决方案,如下所示:

如果我必须这样做,如果其他模块规范发生变化(这种情况经常发生),维护文件将变得非常困难。

你能告诉我怎么做吗,或者给我指出好的方向(欢迎任何想法/评论)。这对我有很大帮助!提前致谢。

0 投票
2 回答
786 浏览

c - 是否有在 Lex/Yacc 解析中捕获错误的经验法则?

我们是否应该尽早(在 Lex 中)解析通用语言时发现错误,或者在哪里更方便并为我们提供更多信息(在 Yacc 中)?各种语言如何解决这个问题?

0 投票
5 回答
6772 浏览

qt - 使用 qt:如何在控制台应用程序之上构建一个 Gui?

我有一个从 bison(解析器)生成的控制台应用程序,我想为它构建一个简单的 gui,这样我就可以将输入从这个 gui 发送到控制台,并从控制台获取输出到 gui。我尝试使用 java 进程类来做到这一点,但它对我不起作用,请帮助我使用 qt 来做到这一点。