8得票3回答
如何设置Flex/Bison规则以解析逗号分隔的参数列表

我希望能够使用flex/bison解析非空、一个或多个元素、逗号分隔(可选用括号包围)的列表。以下是一些可解析的列表示例: 1 1,2 (1,2) (3) 3,4,5 (3,4,5,6) 我使用以下规则来解析列表(最终结果是解析元素“顶级列表”),但在解析时似乎无法得到期望的结果(输入有效...

8得票2回答
在Windows上使用LALR(1)或GLR - 是否有比Bison++ / Flex++更好的替代方案?

更新:此问题已过时,但仅供参考。 原始问题 自2002年以来,我一直在使用相同版本的bison++(1.21-8)和flex++(2.3.8-7)。 目前我并不寻找LALR(1)或GLR的替代方案,只是想了解最新的选项。是否有人知道这些的后续版本除了原版以外还有没有依赖于Cygwin? ...

7得票5回答
多个flex/bison解析器

什么是在项目中处理多个Flex/Bison解析器的最佳方法? 我编写了一个解析器,现在我需要在同一项目中使用第二个解析器。到目前为止,在parser1.y的第三部分中,我插入了main(..)方法并从那里调用了yyparse。 我想要实现的是拥有两个不同的解析器(parser1.y和par...

7得票2回答
Bison:如果一个标记不符合规则,如何忽略它

我正在编写一个处理评论以及其他一些内容的程序。如果评论位于特定位置,那么我的程序会执行某些操作。 Flex在找到评论时传递一个标记,然后Bison查看该标记是否符合特定规则。如果是,则采取与该规则相关联的操作。 问题在于:我接收到的输入可能实际上在错误的位置有注释。在这种情况下,我只想忽略...

14得票4回答
为什么在flex/bison中多行注释这么难懂?

我正在尝试在我的Flex (.l)文件中解析C风格的多行注释:%s ML_COMMENT %% ... <INITIAL>"/*" BEGIN(ML_COMMENT); <ML_COMMENT>"*/" ...

157得票5回答
Antlr的优势(与lex/yacc/bison相比)

我过去在各种项目中使用了lex和yacc(通常更常用的是bison),通常是用于翻译器(例如将EDIF子集流式传输到EDA应用程序中)。此外,我不得不支持基于lex/yacc语法几十年前编写的代码。因此我知道这些工具的使用方法,但并不是专家。 我曾经在各个论坛中看到过关于Antlr的积极评论...

7得票1回答
使用Bison中的yylval来恢复一个字符串。

你好,我对如何在读取特定标记时获取char*感到困惑...我查看了各种网站,它们提供了建议,但并不完整,我的意思是,例如缺少yylval和yytext声明或如何转换类型等.l文件需要什么?.y文件需要什么?我有什么:在.l文件中: {WORD} { yylval = strdup(...

8得票2回答
可重入的Flex和Bison存在问题

我正在学习如何同时使用可重入的Bison和Flex。我已经成功地制作了一个简单的计算器,但是没有可重入功能。然而,当我激活可重入特性并进行必要的修改后,无法使其正常工作。 以下是代码: scanner.l %{ #include <stdio.h> #include "par...

11得票2回答
使用Flex/Bison实现解释器的REPL

我用Flex和Bison为扫描器/解析器编写了类似C语言的语言的解释器。当执行完整程序文件时它可以正常工作。 现在我正在尝试为解释器实现REPL以供交互使用。我希望它能像Ruby或ML中的命令行解释器一样工作: 显示提示符 接受一条或多条语句 如果表达式不完整 显示继续提示符 允许用户...

79得票2回答
调用std::max函数时出现问题

我在Visual Studio中编译我的bison生成文件,出现了以下错误: ...\position.hh(83): error C2589: '(' : '::' 右侧的非法标记 ...\position.hh(83): error C2059: 语法错误:'::' ......