bison相关内容
..
柔性code: 1%选择noyywrap NODEFAULT yylineno不区分大小写 2%{ 3的#include“stdio.h中” 4#包括“tp.tab.h” 5%} 6 7 %% 8“{”{返回'{';} 9“}”{返回'}“;} 10“;” {返回';';} 11“创造”{返回CREATE;} 12“CMD”{返回CMD;} 13“INT
..
什么是实现一个简单的while循环野牛的最好方法?如果它的确与众不同,我使用C,但我可以用C ++为好。 解决方案 什么你问并没有真正融入一个堆栈溢出的答案。这是pretty细致,很多书都写过了。 最基本的答案是,你不要,而在野牛循环实现。野牛不是在这个意义上的语言。野牛建立从语法和行动是联想与该语法规则的分析器。 一个解析器是下推自动机,这是一个状态机附带一个堆栈。它需要令牌的线性序
..
我试图让使用C和野牛逻辑计算器,但我有麻烦了,因为C没有一个boolean类型。 这是我的Flex规则的一部分: “TRUE”| “T”| “T”{yylval = 1;返回TRUE; }“FALSE”| “F”| “F”{yylval = 0;返回TRUE; } 这是我的野牛规则的一部分:行: EOL | EXP EOL {printf的(“%d个%D \
..
我试图做一个折返扫描仪,它依赖于启动条件。 我正沿着类似这样的家伙问题下面的东西 编写重入词法分析器使用Flex 和作为一张海报提到的,扫描仪会工作,如果你明确地创建 yyscan_t ,并把它作为一个额外的参数。不过,我仍然在使用时,你得到 YYG不宣错误信息 BEGIN< SC> 等操纵启动条件。 这是一个错误吗?我应该明确地使用 yy_push_state 和 yy_
..
我需要在野牛语法结构有所帮助。 的从我的另一个问题:的 我试图做出一种元语言编写标记code(如XML和HTML)至极,可直接嵌入到C / C ++ code。 下面是用这种语言编写一个简单的示例,我把它称为WDI(Web开发接口): / * *简单的WDI / HTML示例源$ C $ C * / #包括LT&;&MYSITE GT; 字符串名称=“MYNAME”; 字
..
我要生成的lex / yacc的两个独立的分析功能。通常YACC给你一个函数yyparse()的时候,你需要做一些分析,你可以打电话,但我需要每一个不同的词法和语法相关的几个不同的yyparses。手册页似乎暗示了-p(preFIX)标志,但这并没有为我工作。我从GCC其中指出yylval是不正确被重新标记错误(即它声称几种不同的记号没有定义)。有谁知道一般rpocedure生成这些独立的功能?
..
我有一台扫描仪,解析器和主从中我通过创建可执行 野牛-d parser.y;柔性scanner.l; GCC的main.c parer.tab.c的lex.yy.c 当我运行 ./ a.out的它做什么,我想:如果按Ctrl + D 是pressed一个 EOF 检测和主可以采取相应的行动。这意味着:如果 yyin中是标准输入然后按返回结束该线和主回路的解析等待下一个输入线路。 pressin
..
我有下面的XML语法的正常工作: 程序 :'<' '?'ID ATTRIBUTE_LIST'&GT'?';' 根 ; 根 :'<' ID ATTRIBUTE_LIST'>' node_list'<''/'ID'>' ;node_list :node_s | node_list node_s ; no
..
我有柔性code那份串词位使用的strdup()。 %{ #包括“json.tab.h” #定义YY_DECL为extern“C”INT函数yylex()%} %选择noyywrap%%[\\ t \\ n] +; \\“[A-ZA-Z] + \\”{= yylval.sval的strdup(yytext中);返回的字符串; } [0-9] + {yylval.ival =的atoi(yytex
..
我试图让从flex和野牛一个计算器,但我在编译过程中发现了一个错误。 以下是错误: C:\\的GnuWin32 \\ SRC> GCC的lex.yy.c y.tab.c的-o tugas tugas.y:51:错误:冲突的类型'的yyerror“ y.tab.c的:1433:错误:的“的yyerror'previous隐式声明在这里 下面是我的。l code:%{ #包括LT&;&
..
通过野牛,我想通了,如何让一切都变成一个长字符串如下: arg_list: WORD arg_list {strcat的($ 1,“IFS”); $$ = strcat的($ 1,$ 2); } | 字 ; 和 WORD arg_list {printf的(“%S%S \\ n”,$ 1,$ 2); } 但问题是,我便要再次分裂了$ 2中的第二条规则解析它。有没
..
我想在我的柔性(.L)来分析C风格的多行注释文件: %s的ML_COMMENT %%...&所述; INITIAL>“中/ *”BEGIN(ML_COMMENT); &所述; ML_COMMENT>“中* /”BEGIN(INITIAL); < ML_COMMENT> [。\\ n] + {} 我不返回任何令牌和我的语法(.Y)不以任何方式解决意见。 当我运行我的可执
..
我要寻找的flex和野牛与随行的Makefile,这使得利用内置的规则很短的工作示例。我已经试过了是凌乱的几个谷歌的结果,也不会建或正在C ++这是不能接受的。良好的网上资源和短采样code是AP preciated。 其他 #例如Makefile文件 - 扫描器和分析器。 #创建从“scan.l里”,“myprogram”,“parse.y”和“myprogram.c”
..
在较大的程序我已经给下面的(柔性/野牛) 在软硬度: PN [\\ + | \\ - ] 挖[0-9] + EXP [E | E] {}掏+ “+”{printf的(“+检测\\ n”); 返回PLUS_SIGN;} {PN} {}掏+ {printf的(“数字检测 - %S \\ n”,yytext中)?; s
..
我有一个逗号分隔的列表下面的文法至少一个项目: column_ex pression_list: column_ex $ P $ {pssion $$ = LinkedList_New(); LinkedListItem *项目= LinkedListItem_New($ 1); LinkedList_add($$,项目); }
..
我想使用相同的Flex /野牛扫描/分析器跨preTER以及加载一个文件是间preTED。我不能换行解析在这两种情况下正常工作。 国米preTER:有一个提示,我可以进入由pressing ENTER终止命令。 文件:下面是一个例子输入文件: -----割--------- 开始( 打印(“做得好”),1) ----切------- 因此,有在第一线和后一个新行
..
我知道如何使YACC产生AST,但你如何actaully怎么做呢?我的意思是,你怎么actaully从YACC得到根节点的价值? 解决方案 Yacc的只给你一次背一个节点,它的的总是的东西,你只是在一些较早的时间给了YACC,即,无论你想从任何你想从一个终结符返回减产或退货。 (对不起,你说你知道,但有些人读这可能不是。) 因此,采取一切你woud已经从根或顶部规则返回,并保存(在连
..
我有一个学校,我们需要使用Flex和野牛的项目。我想用C ++,使我有机会获得STL和我自己的类,我写的。我们提供了下面的Makefile: CC = GCC CFLAGS = -gOBJ文件= parse.tab.o symtab.o attr.o lex.yy.o默认:解析器解析器:$ {} OBJ文件 $ {CC} $ {CFLAGS} $ {} OBJ文件分析器-o -lfll
..
我写一个类C语言的跨preTER,使用Flex和Bison扫描仪/解析器。它执行完整的程序文件时,工作正常。 现在我正在努力实现跨preTER交互式使用REPL。我希望它像Ruby或ML命令行间preters工作: 显示提示 接受就行了一个或多个语句 如果除权pression是不完整 显示一个提示延续 允许用户继续输入线 当行了一个完整的前pression结束 呼应
..