问题标签 [flex-lexer]

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 投票
1 回答
1208 浏览

bison - 如何让 Flex 扫描仪返回 Bison 的错误令牌?

Bison 使用一种特殊的错误标记(称为“错误”),可以在 Bison 解析器中使用它来从错误中恢复。有没有办法从 Flex 生成的扫描仪返回这个特定的令牌?

0 投票
1 回答
1065 浏览

visual-c++ - Windows 上的 Flex/bison 编译错误

我有一个 lex 和 yacc 文件,可以在 linux 上很好地编译。当我尝试使用 lex.yy.c 和 y.tab.c 文件在 Windows 上使用 Visual c++ 编译它时,我收到以下错误:

第 184 行是

0 投票
3 回答
1857 浏览

bison - FLEX/BISON:为什么我的规则没有被重新定义?

我正在尝试在 FLEX 和 BISON 中进行一些练习。

这是我写的代码:

calc_pol.y

calc_pol.l

生成文件

你知道出了什么问题吗?谢谢

编辑:错误消息是
flex calc_pol.l: calc_pol.l:18: règle non reconnue
第 18 行是以 开头的行{reel},错误消息翻译成英文为“无法识别的规则”。

0 投票
1 回答
778 浏览

regex - flex(词法分析器)中是否可以反向引用?

我习惯于在语言中使用正则表达式,我可以使用括号来捕获引用。我看到的唯一接近 flex 的东西是 yytext 变量。但它的内容是完全匹配的正则表达式,而不仅仅是它的一部分。

在 flex 中不能使用反向引用吗?如果是这样,我该怎么做?我找不到关于这个主题的任何东西......

我说的是这个: http ://en.wikipedia.org/wiki/Flex_lexical_analysisr

0 投票
5 回答
2494 浏览

parsing - yacc/byacc/bison 和 lex/flex 的适当用途

我阅读的与这些实用程序有关的大多数帖子通常建议使用其他方法来获得相同的效果。例如,提到这些工具的问题通常至少有一个答案,其中包含以下一些内容:

  • 使用 boost 库(在此处插入适当的 boost 库)
  • 不要创建 DSL 用途(在此处插入最喜欢的脚本语言)
  • 蚂蚁更好

假设开发商...

  • ... 熟悉 C 语言
  • ...确实知道至少一种脚本语言(例如,Python、Perl 等)
  • ...必须在几乎每个工作的项目中编写一些解析代码

所以我的问题是:

  • 哪些情况适合这些实用程序?
  • 在任何(合理的)情况下,没有比 yacc 和 lex(或衍生物)更好的替代问题的方法吗?
  • 在实际的解析问题中,人们期望多久会遇到 yacc 和 lex 中的任何缺点,而这些缺点可以通过更新的解决方案得到更好的解决?
  • 对于还不熟悉这些工具的开发人员来说,花时间学习语法/习语值得吗?这些与其他解决方案相比如何?
0 投票
2 回答
2003 浏览

c - 在 YACC、Lex 和 C 文件之间共享内存

我有一个 YACC (Bison) 语法、一个 Lex (Flex) 标记器和一个 C 程序,我需要在其中共享一个struct(或实际上任何变量)。目前,我在语法文件中声明实际对象,并extern在我需要它的任何地方(也就是说,我的 C 源文件),通常使用指针来操作它。我在 C 文件和语法文件之间有一个共享的头文件(和实现)文件,其中的函数对操作我的数据结构很有用。这行得通,但感觉有点不舒服。有没有更好的方法在语法和程序之间共享内存?

0 投票
3 回答
2288 浏览

c - 如何从 lex/yacc 生成不同的 yyparse 函数以在同一程序中使用?

我想从 lex/yacc 生成两个单独的解析函数。通常,yacc 会为您提供一个函数 yyparse(),您可以在需要进行一些解析时调用该函数,但我需要有几个不同的 yyparse,每个都与不同的词法分析器和语法相关联。手册页似乎建议使用 -p (前缀)标志,但这对我不起作用。我从 gcc 收到错误,表明 yylval 没有被正确地重新标记(即它声称没有定义几个不同的标记)。有谁知道生成这些单独功能的一般程序?

谢谢

0 投票
1 回答
3300 浏览

makefile - Yacc 和 Lex 包含混淆

我想知道如何正确编译带有调用 yyparse 的 Makefile 的程序?

这就是我所做的:

我有一个编译所有常规文件的 Makefile,它们与 y.tab.c 或 lex.yy.c 没有连接(我应该拥有它们吗?)

我在我的代码之上执行此操作:

这是我尝试制作程序时发生的情况:

当我只输入“make”时,它给了我很多警告。一些示例如下所示。

在函数yywrap': /src/parser.y:12: multiple definition ofyywrap' server.o :/src/parser.y:12: 这里首先定义 utils.o:

在函数yyparse': /src/y.tab.c:1175: multiple definition ofyyparse' server.o:/src/y.tab.c:1175: 这里首先定义 utils.o

我收到许多不同的错误,涉及不同的 yy_*** 文件。我过去通过多次调用 yyparse 成功编译,但这次似乎有所不同。这似乎很像某个地方的包含问题,但我不知道它是什么。我所有的头文件也有 ifndef 条件。

谢谢你的帮助!

0 投票
1 回答
1021 浏览

flex-lexer - 编译 flex(词法分析器)时出错

我正在尝试在我的 Windows 计算机上安装 flex(词法分析器,而不是 Adob​​e 程序)。我已经安装了 MSYS。我解压 flex, ./configure 它,但是当我尝试制作它时,我得到了这个错误:

直到最近,我只使用 .exe 安装过东西,所以我对此感到很困惑。安装 bison 和 m4 都很顺利,我想知道为什么不是这样。有任何想法吗?

0 投票
1 回答
1182 浏览

dll - 将flex文件编译成dll

我有一个用 flex (cygwin) 创建的词法分析器。通常我将其编译为 .exe 文件。

对于最新的项目,我需要一个词法分析器来在 Windows XP 上运行的更大的 C# 程序中使用。当然,我可以使用 System.Diagnostics.Process 执行文件。但这对我来说不是最好的解决方案,因为我希望该程序在多台机器上运行。

如何在 cygwin 下创建具有词法分析器源代码的 dll?

在此先感谢... Szpilona