- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
13.3 语法分析自动生成工具 ? 13.3.1 YACC系列语法分析自动生成工具简介 2.YACC文法输入文件的格式 a. 完整的YACC源程序由用两组%%分隔的3部分组成: 声明部分 %% 翻译规则 %% 程序部分 其中,声明部分和程序部分是可省略的,但规则部分是必须的。 b. 因此,YACC源程序文件的最简形式是: %% 规则部分 13.3 语法分析自动生成工具 ? 13.3.1 YACC系列语法分析自动生成工具简介 【例13.5】 为了说明怎样准备YACC源程序,构造一个简单的台式计算器,该计算器读入一个算术表达式,计算表达式的值,然后打印输出表达式的结果值。台式计算器的建立从下面的表达式文法开始: E → E + T | T T → T * F | F F → ( E ) | digit 记号digit是0~9的单个数字。 13.3 语法分析自动生成工具 ? 13.3.1 YACC系列语法分析自动生成工具简介 ———————————————————— %{ #include ctype.h %} % token DIGIT %% line : expr \n {printf(%d\n, $1);} ; expr : expr + term {$$ = $1 + $3;} | term ; term : term * factor {$$ = $1 * $3;} | factor ; factor : ( expr ) {$$ = $2;} | DIGIT ; %% yylex( ).{ int c; c = getchar( ).; if(isdigit(c)) { yylval = c –0; return DIGIT; } return c; } ———————————————————— 13.3 语法分析自动生成工具 ? 13.3.1 YACC系列语法分析自动生成工具简介 3.使用带有二义性文法的YACC规约 修改上例的YACC说明,使台式计算器更加有用。 首先,让台式计算器计算表达式序列,每行一个,还允许表达式之间有空白行。为做到这一点,修改第一条为 1ines : lines expr \n { printf(%g\n,$2);} | 1ines\n | /* empty */ ; 在YACC中,第三行那样的空白产生式表示?。 其次,扩展表达式的种类,使之可以包含由多个数字位组成的数值,包括算符+、-(一元和二元)、*和/。最简单的描述方法是用下面的二义文法: E → E + E | E – E | E * E | E / E | (E) | – E | NUMBER 13.3 语法分析自动生成工具 ? ———————————————————— %{ #include ctype.h #include stdio.h #define YYSTYPE double /* double type for YACC stack */ %} % token NUMBER % left + - % left * / % right UMINUS %% 《编译原理简明教程》 普通高等教育“十二五”规划计算机教材 ---太原理工大学 ---计算机科学与技术学院 ---冯秀芳、崔冬华、段富等 第一章 引言 第二章 形式语言理论基础 第三章 自动机理论基础 第四章 词法分析 第五章 语法分析—自顶向下分析方法 第六章 语法分析—自底向上分析方法 第七章 语义分析及中间代码的生成 第八章 代码优化 第九章 目标代码的生成 第十章 符号表 第十一章 目标程序运行时的存储组织与分配 第十二章 出错处理 第十三章 编译程序自动生成工具简介 第十四章 面向对象语言的编译 第十五章 并行编译技术 目 录 第十三章 编译程序自动生成工具简介 学习目标 了解和掌握高级语言编译程序自动生成工具的种类 了解和掌握几种常用的词法分析自动生成工具用法 了解和掌握几种常用的语法分析自动生成工具用法 词法分析、语法分析、一遍扫描分析和多遍扫描分析等,其实都是非常机械的过程,完全可以由计算机代替
您可能关注的文档
最近下载
我们是专业写作机构,多年写作经验,专业代写撰写文章、演讲稿、文稿、文案、申请书、简历、协议、ppt、汇报、报告、方案、策划、征文、心得、工作总结代写代改写作服务。可行性研究报告,实施方案,商业计划书,社会稳定风险评估报告,社会稳定风险分析报告,成果鉴定,项目建议书,申请报告,技术报告,初步设计评估报告,可行性研究评估报告,资金申请报告,实施方案评估报告
文档评论(0)