bison相关内容
伙计们,我在处理野牛代码时遇到了麻烦...编译了这段代码后,我得到了58个shift/reduce和40个reduce/reduce冲突...有关如何限制它们的任何提示,或指向我给一个很好的指导如何去做?提前致谢!! (所有以T_开头的内容,例如T_get,都是在此代码上方定义的令牌) start:T_get G |T_head G |T_post G ; G:url canon ;
..
我正在尝试在Visual Studio 2013中使用flex和bison,但是我遇到了问题. 我已经从此处下载了win_flex_bison,然后是"Error 1 error MSB3721: The command "start /B /WAIT /D "D:\\...\" win_bison.exe --output="sample.tab.cpp" --defines="sample.
..
我正在为资产xchange格式构建解析器.而且我在野牛文件中包含了%token-table指令,但是,从flex代码中,我只是无法访问表或与之关联的常量.就是在尝试编译此代码时: Frame|FrameTransformMatrix|Mesh|MeshNormals|MeshMaterialList|Material { printf("A keyword: %s\n", yytex
..
我的main.cpp看起来像这样: #include #include #include #include "astgen.h" #include "astexec.h" extern int yyparse(); extern FILE *yyin; int main() { //yydebug = 0;
..
我正在尝试生成一个小型JavaScript解析器,该解析器还包括一个小型项目的类型化变量. 幸运的是,jison已经提供了一个jscore.js,我刚刚对其进行了调整以满足自己的需求.添加类型后,我遇到了减少冲突的问题.我将问题最小化到最小的JISON: 吉森: %start SourceElements %% // This is up to become more comp
..
我写了一个flex和野牛, 我遇到了一个问题,该问题可以通过以下程序进行说明. 该程序用于解析由等号(=)分隔的键/值对 我希望我的野牛脚本能将键和值标记化并打印出来. 下面是我的flex程序的代码段 %{ /* file : kvp.l */ #include #define YYSTYPE char* #include "k
..
我知道我可以在.y文件中声明%parse-param {struct my_st *arg}.因此yyparse()更改为yyparse(struct my_st *arg).但是我该如何在flex规则中引用该参数呢?例如: [0-9]+ { do_work(arg); return NUMBER; } 我想创建一个可重入的解析器,所以我需要这样做.请帮助我,谢谢! 解决方案
..
我在野牛语法构建方面需要一些帮助. 我的另一个问题: 我正在尝试制作一种用于编写可以直接嵌入C/C ++代码中的标记代码(例如xml和html)的元语言. 这是用这种语言编写的一个简单示例,我称之为WDI(Web开发接口): /* * Simple wdi/html sample source code */ #include string name
..
考虑以下Bison语法(这是我正在研究的更大的语法的精简版): %token ident %left '+' %left CALLPREC %% start: add ';' ; expr: ident | call | add ; call: expr '(' ')' %prec CALLPREC ; add: expr '+' expr ; 显然,在没有优先级的情况下,解析诸如
..
给出野牛规格:%right TOK_ADD TOK_MUL 我想知道TOK_ADD和TOK_MUL的优先顺序是什么. 如果我有Bison规范 %left TOKMUL TOKADD %left TOKDIV %left TOKSUB 我想知道TOKMUL TOKADD TOKDIV的优先顺序是什么 和TOKSUB是 解决方案 野牛/yacc优先顺序从低到高-列出的第一
..
以下用于解析逻辑表达式的简单语法会导致减少/减少冲突: %token AND OR %token NUMBER VARIABLE %% logical_expr : logical_expr AND logical_term | logical_expr OR logical_term | logical_term ; logical_term : V
..
我正在尝试使用flex和bison解析一个输入文件,但是在编译程序时遇到了一个困难.我正在附上我得到的flex和bison代码以及错误. 请帮助我解决这些错误 lex.l %{ #include #include #include "yacc.tab.h" #define YY_DECL extern "C" int yylex
..
我正在为一种非常简单的编程语言编写BNF语法,并使用Flex和Bison进行编译. 我只有3种变量和常量类型:实数,整数,字符串. 我的.l文件具有"ID"的令牌定义,如下所示: DIGIT [0-9] LETTER [a-zA-Z] ID {LETTER}({LETTER}|{DIGIT})* 我的.y文件具有标识符的定义,如下所示: identifier: ID; 现在
..
我正在 yacc / bison 中编写一个简单的计算器. 表达式的语法看起来像这样: expr : NUM | expr '+' expr { $$ = $1 + $3; } | expr '-' expr { $$ = $1 - $3; } | expr '*' expr { $$ = $1 * $3; } | expr '/' expr { $$ = $1 / $3; } | '
..
我正在尝试学习YACC,在弄清楚它给我的警告消息时遇到了一些麻烦.这是我文件的一部分: define_character: WORD IS STRING COLOR { printf("%s's full name is %s and thier color is %s", $1, $3, $4); }; dialog: WORD COLON STRING { printf
..
我正在尝试调试Bison + Flex生成的代码(真是太高兴了!).它的段错误非常严重,以致gdb甚至没有可用的堆栈信息.有什么方法可以使这种组合生成更可调试的代码? 请注意,我正在尝试编译可重入的词法分析器和解析器(这本身就是一个巨大的痛苦). 下面是尝试使用yyparse的程序: int main(int argc, char** argv) { int res;
..
我刚刚在重做一些使用bison编写的类似编译器的代码.当我这样做时,我想知道现代的等效物是什么?是否有一个不错的.NET(或类似)编译器编写框架,该框架采用BNF语法并拆分出可以进行解析的DLL? 解决方案 我在自己的动态语言解释器中使用Gardens Point GPPG和GPLEX. Microsoft在Visual Studio 200x SDK中将GPPG和GPLEX用作MPPG和
..
这是针对Jison中的解析器的,但我想Bison也是如此. 我有一个为表达式定义的规则. expr : NUMBER -> { type: "number", value: $1 } | "(" expr ")" -> $2 | expr "+" expr -> { type: "+", left: $1, right: $3 } | expr "-"
..
当Yacc/Bison中存在转移/减少冲突时,是否可以强制完全按照您希望的方式解决冲突?换句话说:是否可以明确地迫使其优先考虑转移或减少? 对于我阅读的内容,如果您对默认分辨率感到满意,可以告诉生成器另一个选择是重写语法以解决此问题.我不知道这是否总是可能的,并且常常使它变得更难理解. 最后,我已经阅读了优先级规则可以解决此问题.我无能为力地尝试了很多方法,但我无法使其正常工作.可以使
..
我正在git源代码控制下使用Qt4制作GUI程序( Github页面 ).项目的一小部分需要扫描和解析.所以我想在项目中使用flex和bison.我可以想到3种方式- 使flex和bison文件不受项目和源代码控制.生成C源文件并将其添加到项目中. 将flex和bison文件添加到项目中,但分别运行flex和bison命令. 与IDE(Ubuntu 12.04上的Qt Creator)和
..