- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
bison程序的结构 bison程序由三部分组成:定义段、规则段、 用户子例程段 …定义段… %% …规则段… %% …用户子例程段… 定义段 定义段包括文字块、逐字拷贝到生成的C 文件开头部分的C代码。通常包括#define 和#include行。可能有%union、 %token等声明。 规则段 规则段由语法规则和包括C代码的动作组 成。动作是bison在与语法规则相符的时候 执行的C代码。 用户子例程段 用户子例程段通常包括从动作中调用的例 程。 flex程序的结构 flex程序也由三部分组成:定义段、规则 段、用户子例程段 …定义段… %% …规则段… %% …用户子例程段… 规则段 规则段包括模式行和C代码。C代码在与这 个模式匹配的时候执行。如果C代码包括 多条语句,则必须用括号加以界定。 用户子例程段 与bison一样,用户子例程段的内容被flex 逐字拷贝到C文件中。这一部分包括从规 则中调用的例程。如果重新定义了 yywrap()等例程,新的版本就可以放在这 里。 %token NAME NUMBER %% statement: NAME = exp | exp { printf(= %d\n, $1); } ; exp: NUMBER + NUMBER { $$ = $1 + $3; } | NUMBER - NUMBER { $$ = $1 - $3; } | NUMBER { $$ = $1; } ; %% main () { yyparse (); } yyerror(s) char *s; { fprintf(stderr, %s\n, s); } exam.y %{ #include exam.tab.h extern int yylval; #undef yywrap %} %% [ \t] ; [0-9]+ { yylval = atoi(yytext); return NUMBER; } \n return 0; . return yytext[0]; %% int yywrap() { return 1; } exam.l 编译和运行 % bison –d exam.y % flex exam.y % cc –o exam exam.tab.c lex.yy.c % exam 3-5 = -2 * * *
您可能关注的文档
最近下载
- 沸石转轮 RTO设计方案.docx VIP
- (完整版)高标准农田建设施工组织设计.pdf VIP
- 江苏省南京市2026届高三年级9月学情调研英语试卷(含解析,无听力音频无听力原文).pdf VIP
- 人教版(PEP)六年级英语上册复习知识点.doc VIP
- 地方高校工科类微专业建设策略.pptx VIP
- 2023年湖北恩施州鹤峰县选调工作人员11人笔试历年高频考点-难、易错点荟萃-附带答案详解.docx
- 大唐集团工程管理制度.docx VIP
- 人教版(PEP)六年级英语上册复习知识点.pdf VIP
- 三洋电梯图纸VF210-VF310-VF320-VF330电气原理图纸SANYO-E-01.pdf
- 外国教育史课件.ppt VIP
原创力文档


文档评论(0)