问题标签 [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 回答
3603 浏览

c++ - Bison 可以解析 UTF-8 字符吗?

我正在尝试制作一个 Bison 解析器来处理 UTF-8 字符。我不希望解析器实际解释 Unicode 字符值,但我希望它将 UTF-8 字符串解析为字节序列。

现在,Bison 生成了以下有问题的代码:

问题是 UTF-8 字符串的许多字节都会有负值,而 Bison 将负值解释为 EOF,然后停止。

有没有解决的办法?

0 投票
3 回答
6127 浏览

bison - PHP 中的类似 Flex/Bison 的功能

我正在寻找一种在 PHP 中获得 Flex/Bison(或 Lex/Yacc 等)支持的方法。具体来说,我在 Web UI 中实现了一个布尔查询解析器,并且宁愿将所有操作保留在 PHP 中(而不是调用 C 解析器,或者将事情传递给 Python 等)。

0 投票
2 回答
35940 浏览

bison - 如何解决 Bison 警告“...没有声明的类型”

在此文件上运行 Bison:

导致以下警告:

警告:'exp' 的 $$ 没有声明的类型。

这是什么意思,我该如何解决?

0 投票
1 回答
323 浏览

coding-style - Bison(和 flex)编码约定

您建议编写 Bison (.y) 和 flex (.lex) 文件的编码约定和准则是什么?

请说明代码部分的长度及其样式。

谢谢,
阿萨夫

PS,这里
有一个关于它的旧线程,但我正在寻找更详细的答案(并将其放在 SO 上!)。

0 投票
3 回答
1706 浏览

search - Flex 和 Bison 关联难度

使用 Flex 和 Bison,我有一个布尔查询语言的语法规范,它支持逻辑“与”、“或”和“非”操作,以及使用“()”的嵌套子表达式。

一切都很好,直到我注意到像“A和B或C和D”这样我想解析为“(A&B)|(C&D)”的查询实际上被解释为“A&(B |( C&D))”。我几乎可以肯定这是一个关联性问题,但似乎无法在任何地方找到适当的解释或示例——否则我错过了一些重要的东西。

来自 boolpars.y 的相关信息:

谁能找到漏洞?我不明白为什么 Bison 没有给予“或”适当的优先级。

0 投票
1 回答
1161 浏览

c++ - yyparse 正在打印一个前导选项卡

在我的 bison/flex 程序中,在调用 yyparse() 之后,会打印一个前导选项卡,但我不知道为什么。你能看出有什么问题吗?

这将调用野牛代码,并在 yyparse() 返回后立即打印一个选项卡。

我所有的野牛规则只是正则表达式与返回语句配对。我能看到的唯一对野牛感兴趣的代码是:

我尝试了几个人给出的建议,但仍然没有运气。这是我的完整 flex 文件:

}

0 投票
1 回答
5105 浏览

string - Flex 可以将字符串匹配返回给野牛吗

我正在编写一个 Bison/Flex 程序来将 LaTeX 转换为 MathML。目前,处理函数(即 \sqrt、\frac 等)的工作方式是这样的,每个函数都有一个标记

并将令牌 FUNC_FRAC 传递回 bison,它在此子树的描述中发挥作用:

但这意味着我需要定义和处理可能无限数量的令牌。我想做的是这样的事情,它不像写的那样工作。在弹性:

在野牛中:

0 投票
3 回答
9724 浏览

bison - 如何在 Windows 上使用 flex?

我正在尝试在 Windows 上编译一个项目,它使用 flex/bison。

安装 MinGW 后,编译 flex 和 bison 文件运行良好,但是当我进入构建的最后一步时:

它说找不到库。

在 google 上一段时间后,我尝试将标志更改为 -llibfl.a,但也无法找到该库。

我怎样才能获得该库的副本或自己构建一个?

0 投票
1 回答
1098 浏览

c - 如何使用 GNU Bison 正确破坏令牌语义值(符号记录)并避免内存泄漏?

我正在编写一个简化的 Pascal 解析器/解释器,现在我正在考虑分段错误。我还没有得到它们,一切都运行良好,但由于我是在 Cygwin 下开发的,所以我无法通过 valgrind 测试程序。

基本上我在做什么如下所述:

当然,令牌输入正确和一切。例如,问题是在否定某些表达式时。我通常重用一些 symrec * 而不是 malloc 一个新的。

例子:

当然,这在我的上下文中是无效的(在示例中,我只是将 int 或 double 作为数据类型),我正在正确解析 symrec *,但在这种情况下,析构函数 dealloc $2 不会留下 $$ 为某种悬空指针?

在写这篇文章时,我在想,如果这真的发生并且给我带来了一些段错误,我可以让 $2 = NULL; 并在 %destructor{} 子句中检查?

PS:我不是以英语为母语的人,而且我已经写了很长时间,所以对于任何混淆的想法,请见谅,我会及时重新解释。

0 投票
3 回答
15707 浏览

parsing - Lex / Flex 中的启动状态

我正在使用 Flex 和 Bison 作为解析器生成器,但是我的扫描仪中的启动状态存在问题。

我正在使用排他规则来处理评论,但这个语法似乎与引用的标记不匹配:

在这个简单的例子中,这一行:

不完全匹配作为评论,除非我包含此规则:

我如何绕过这个而不必将所有这些令牌添加到我的独家规则中?