bison相关内容

Bison C++获取内标识的名称-yytname_是私有的

我正在尝试获取C++Bison中令牌的名称: 例如%token TPLUS "+" TMINUS "-" TMUL "*" TDIV "/" 但是,在Bison的C++变体中,%token-table不执行任何操作。 我注意到在生成的bison代码中有一个令牌映射: const char* const parser::yytname_[];,但它是私有的。 有人知道如 ..
发布时间:2022-08-31 13:30:30 C/C++开发

C++解析器中的Bison%令牌表替代?

我正在学习Bison生成C++分析器。 由于%token-table已过时,是否有其他方法可以在c++解析器中从内标识整数值中获取名称? 推荐答案 您可以使用manual section on syntax error reporting中介绍的yysymbol_name()。 C++API显然有一个类似的method on the parser context objec ..
发布时间:2022-08-31 13:18:59 C/C++开发

Flex和Bison需要从对方那里得到什么?

同时使用flex和bison时 flex文件为什么需要#include由Bison创建的C标头? 编译需要bison和flex创建的C源文件。Bison和flex创建的C源文件对彼此有什么要求? 推荐答案 Bison生成的头中最重要的是用于标识令牌类型的枚举值(这些值是由词法操作返回给解析器的值)。 标头还声明YYSTYPE语义类型和变量yylval(具有该类型),用于将 ..
发布时间:2022-08-31 13:11:54 其他开发

将AST从flex+bison输出到main.cpp

免责声明:尽管我已经完成了本教程:http://ds9a.nl/lex-yacc/cvs/lex-yacc-howto.html ,但我只是个新手 现在,我正在为OpenGL-C++中的一个项目构建一个视频游戏。Cpp包含所有的游戏图形、逻辑等(相当容易管理,所以不是问题)。在游戏开始之前,它需要解析一个配置文件(让我们假设它是任意格式,所以INI和JSON API是不成问题的)。 我了 ..
发布时间:2022-08-31 13:04:43 C/C++开发

如何使用Bison解析C字符串

我在C文件中有一个字符串,如下所示: char *test = "print x"; 我想用我编写的Bison解析器来解析它。有可能吗? 推荐答案 Bison解析器根本不读取输入。它们只是通过重复调用yylex来获得一系列令牌。(或者,使用现代野牛,您可以创建一个“推式解析器”,它在连续的调用中被赋予令牌。)因此,实现yylex的对象负责输入。 如果您使用flex创建词法扫 ..
发布时间:2022-08-31 12:57:24 其他开发

如何在bison和flex中使用缩进作为块分隔符

我想知道如何在bison+flex中将缩进实现为块分隔符。就像巨蟒一样。我正在编写自己的编程语言(主要是为了好玩,但我打算将其与游戏引擎一起使用),我会尝试想出一些特殊的东西,使样板程序最小化,开发速度最大化。 我已经用C编写了一个编译器(实际上是`langToy‘到Nasm的转换器),但失败了。由于某种原因,它只能处理整个源文件中的一个字符串(嗯,我已经醒了超过48小时-所以……你知道,大 ..
发布时间:2022-08-31 12:47:49 其他开发

创建一个单独的“布尔表达式";动态语言规则

我正在 Bison 中为一种简单的动态类型语言创建语法.我有一个“通用"expression 规则,它有点类似于 C 中右值的概念;表达式出现在赋值的右侧,它们也可以作为参数发送给函数等.规则的一个大大简化的版本如下: 常量表达式: TOK_INTEGER_CONSTANT|TOK_FLOAT_CONSTANT|字符串字面量;表达: 常量表达式|标识符|布尔表达式|booleanExpressi ..

YAML 解析 - lex 还是手卷?

我正在尝试编写一个简单的 YAML 解析器,我从 yaml.org 阅读了规范,在开始之前,我想知道编写手动解析器是否更好,或者使用 lex (flex/bison).我查看了 libyaml (C 库) -似乎没有使用 lex/yacc.YAML(不包括流样式),似乎更面向行,所以,是吗更容易编写手动解析器,或使用 flex/bison谢谢. 解决方案 这个答案基本上是对以下问题的回答: ..
发布时间:2022-01-14 11:24:50 其他开发

解析 Bison 中的 While 循环

在 Bison 中实现简单的 while 循环的最佳方法是什么?如果它有所不同,我使用的是 C,但我也可以使用 C++. 解决方案 您的问题并不适合 Stack Overflow 的答案.它非常详细,已经写了很多关于它的书. 基本答案是您没有在 Bison 中实现 while 循环.野牛不是那种意义上的语言.Bison 根据语法和与该语法中的规则相关联的操作构建解析器. 解析器 ..
发布时间:2021-12-26 18:30:25 其他开发

调用 std::max 时出现问题

我在 Visual Studio 中编译了我的野牛生成的文件,并得到了这些错误: ...\position.hh(83): error C2589: '(' : '::'右侧的非法标记 ...\position.hh(83):错误 C2059:语法错误:'::' ...\position.hh(83): error C2589: '(' : '::'右侧的非法标记 ...\positi ..
发布时间:2021-12-22 18:57:52 C/C++开发

是否有可用于 8 位嵌入式系统的 flex/bison 替代方案?

我正在为一种简单的类似 BASIC 的语言编写一个小型解释器,作为使用 avr-gcc 工具链在 C 语言中的 AVR 微控制器上的练习.但是,我想知道是否有任何开源工具可以帮助我编写词法分析器和解析器. 如果我写这个在我的 Linux 机器上运行,我可以使用 flex/bison.现在我把自己限制在 8 位平台上,我必须手工完成,还是不? 解决方案 我已经实现了一个针对ATmega ..
发布时间:2021-12-12 23:04:39 其他开发

来自野牛的 ANTLR 语法

我正在尝试将一个语法从 bison 翻译成 ANTLR.野牛的语法本身非常简单,但我找不到这样做的简单方法. bison 中的语法: expr = expr 或 expr |expr 和 expr |(expr) 欢迎任何提示/链接/指针. 谢谢,尤利安 解决方案 在 ANTLR 中,您不能创建左递归规则: a : a b; 尾递归很好: a : b a; 有关左递 ..
发布时间:2021-11-11 03:45:25 其他开发

Antlr 的优点(相对于 lex/yacc/bison)

我过去曾在各种项目中使用过 lex 和 yacc(更常见的是 bison),通常是翻译器(例如流式传输到 EDA 应用程序的 EDIF 子集).此外,我不得不支持基于可追溯到几十年前的 le​​x/yacc 语法的代码.所以我对这些工具了如指掌,尽管我不是专家. 过去我在各种论坛上看到过关于 Antlr 的正面评论,我很好奇我可能遗漏了什么.因此,如果您同时使用了两者,请告诉我 Antlr ..
发布时间:2021-11-11 03:33:45 C/C++开发

为什么这个语法不解析 return 语句?

我正在尝试编写一个可以解析以下 3 个输入的语法 -- 测试文件--类 hi 实现 ho:var x:int;结尾;-- 测试文件 2 --接口xs:myFunc(int,int):int结尾;-- 测试文件 3 --类 hi 实现 ho:方法 myMethod(x:int)返回 y;结尾结尾; 这是lexer.l: %{#include #include #include "parser. ..
发布时间:2021-10-04 18:57:12 其他开发

Bison/Flex 解析问题

我正在使用 bison 和 flex,目前遇到了一些问题.当前读取第一个字符并将其传递给 Bison,但立即抛出 yyerror().它应该打印 1,因为 'w' 是由我的 Flex 规则定义的 Ident. 我无法确定问题的根源.我没有使用 Bison 的经验. 这是我的野牛解析规则: %%程序:StmtSeq {printf(“13");};StmtSeq : Stmt Stm ..
发布时间:2021-10-04 18:57:09 其他开发

Flex/Bison:yytext跳过一个值

我已经花了两天的时间试图弄清楚该程序为何采用这种方式.对于一个类项目,我试图编写一个解析地址并以某种方式输出地址的程序.在我真正进入程序的输出部分之前,我只想确保Bison-fu实际上是正确的,并正确输出一些调试信息. Flex和Bison看起来好像很好地相互协作,正如预期的那样,但是由于某种原因,当我解析地址的第三行时,yytext只是跳过了邮政编码,直接转到新行. 以下是我测试过的 ..
发布时间:2021-04-15 19:49:29 服务器开发

C变体语法上的Shift/Reduce冲突

我正在为类似C的语法编写解析器,但是遇到了移位/减少冲突的问题: 基本上,语法接受一系列可选的全局变量声明,后跟函数. 我有以下规则: 程序:global_list function_list;type_name:TKINT/*整数*/|TKFLOAT/*浮动*/|TKCHAR/*字符*/global_list:global_list var_decl';'|;var_decl:ty ..
发布时间:2021-04-15 19:49:26 其他开发