问题标签 [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 投票
3 回答
7411 浏览

antlr - 与 Flex/Bison 相比,使用 ANTLR 有什么缺点?

几年前,我在本科学习期间曾在 Flex, Bison 工作过。然而,我现在已经不记得太多了。最近,我听说了 ANTLR。

  • 你会建议我学习 ANTLR 还是更好地复习 Flex/Bison?
  • ANTLR 的功能是否比 Flex/Bison 多/少?
0 投票
5 回答
375 浏览

regex - 了解正则表达式是否适合构建语言?

我正在阅读O'Reilly 的Flex & Bison,想知道事先学习正则表达式是否有助于开发编程语言?

0 投票
3 回答
156 浏览

yacc - 我是否被迫使用 %glr-parser?

我一直在避免移位/减少错误。现在终于我想我遇到了我的对手。

问题是 int[] 被定义为

而 a[0] 被定义为

Var 和 Type 都被定义为 VAR ,它是任何有效的变量[a-zA-Z][a-zA-Z0-9_]。除了添加一个虚拟令牌(例如**Decl** Type OptSquareBrackets代替)之外,还有没有办法写这个没有冲突?从这条规则中,我得到 1 个 shift/reduce 和 1 个 reduce/reduce 警告。

0 投票
2 回答
279 浏览

yacc - 为什么我在“)”而不是“(”上有轮班减少/冲突?

我有类似的语法

和 (var)

我的规则是这样的

问题是它似乎无法判断 ) 是否属于%(CommaLoop)% (val)但它抱怨 ) 而不是 (。到底是什么?它不应该抱怨(吗?我应该如何修复错误?我认为制作%(令牌是一个很好的解决方案,但我想$(在执行此操作之前确定为什么不是错误。

0 投票
2 回答
827 浏览

yacc - 告诉 Bison/Yacc 改变而不是减少来解决冲突

我有一种情况,我理解有一个带有移位/减少冲突的规则。我希望规则永远不会减少,直到可能的最后一刻(行尾)。所以我想说总是换班。我该怎么做呢?

0 投票
3 回答
29555 浏览

yacc - 如何在 yacc 中将 yylval 与字符串一起使用

我想传递一个令牌的实际字符串。如果我有一个名为 ID 的令牌,那么我希望我的 yacc 文件真正知道调用了什么 ID。我必须使用 yylval 将字符串从 flex 文件传递​​给 yacc 文件。我怎么做?

0 投票
2 回答
42101 浏览

parsing - yylval 和工会

yacc 文件中 union 的目的是什么?它是否与 flex 文件中的 yylval 直接相关?如果你不使用yylval,那么你不需要使用union?

0 投票
2 回答
1160 浏览

parsing - lex/yacc 和解析器/扫描器

lex 和 yacc 应该一起使用。

哪个是扫描仪,哪个是解析器?

哪个创建扫描仪,哪个创建解析器?

0 投票
3 回答
251 浏览

c - 如何创建结构数组的数组

我正在尝试使用结构数组的数组创建符号表。

现在我只有一个结构数组,它是这样创建的:

它有效,但我想做这样的事情:

我该怎么做?我想做的事情有意义吗?

0 投票
3 回答
7285 浏览

macos - 在 Mac OS X 10.6 上编译和执行莎士比亚编程语言翻译器 spl2c 会导致警告/错误

我想尝试使用莎士比亚编程语言,所以我从这里下载了它并使用cd spl-1.2.1 Make.

编译spl2c执行时有几个警告:

然后,当它尝试编译所有示例时,一切都变得混乱:

有人能指出我解决这个问题的正确方向吗?我最初的项目将学习 spl,而不是倾向于调试编译器(我实际上最终想编写自己的编译器,但我现在更愿意坚持我的初始项目)。

我在跑步OS X 10.6.2,,,,gcc version 4.2.1 (Apple Inc. build 5646) (dot 1)flex 2.5.35bison (GNU Bison) 2.3

编辑:对于不需要 goto 的简单程序(例如 hello.spl),您可以通过删除除第一个 ACT I/SCENE I 之外的所有 ACT/SCENE 行来解决此问题。