- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基础课程实践项目L0编译器的熟悉与C0语言编译器的构造
基础课程实践项目
PL/0编译器的熟悉与C0语言编译器的构造
张昱 2013 年秋
P1 预备阶段
1、实验环境熟悉
安装 Linux ,使用 GCC 来编译C 程序,如PL/0 编译器,并运行编译生成的可执行程序。
2、PL/0 语言了解并确定与PL/0 语言表达能力类似的C0 语言
阅读pl0.zip 中的doc/pl0.pdf和sample/tests.pl0,理解PL/0 语言的特征;编译PL/0 编译器,
运行所生成的可执行的PL/0 编译器并用它编译运行tests.pl0 。
C0 语言只有整数类型,它是C 语言的一个子集,其程序结构包含变量声明(PL/0 中的
常量定义用带赋值的变量声明来表示)、变量声明和无参函数声明(定义)。C0 语言有赋值
语句、条件语句、循环语句、函数调用语句、复合语句和空语句。
注意:C0 语言没有PL/0 语言所允许的嵌套定义的过程(即在一个过程体中定义另一个
过程)。C0 语言编写出的程序是一个合法的C 程序,可以用GCC 编译得到可执行程序并运
行。
我们将在后面的课程实验中,要求大家写出C0 语言的词法和语法定义,并构造C0 的
编译器。
3、编写C0 程序
用C0 语言编写与tests.pl0 功能相同的tests.c ,并用GCC 编译并运行。
4、初步理解PL/0 编译器的中间表示
对比 pl0.zip 中的sample/tests.pl0 和sample/tests.res,尝试理解PL/0 编译器所用的中间表
示——一种栈机器代码(在doc/pl0.pdf 的1.2 节有简要介绍)。
P2 词法分析
1、理解PL/0 编译器的词法分析过程
PL/0 编译器的词法分析由src/pl0.c 中的getsym( )函数来负责完成。
2、扩展PL/0 的词法
扩展PL/0 编译器以支持:1)由/*开始后跟0 个或多个字符、再以*/结尾的多行注释;2 )
以0 开头后跟0~7 这 8 种数字组成的八进制数;3 )以0x 或0X 开头后跟0~9、A~F 、a~f
组成的十六进制数。
3、词法的形式描述
分别给出PL/0 语言和C0 语言所的词法规范(即用正规式描述语言中合法的单词)。
4、学习使用词法分析器的生成工具Flex
阅读Flex manual和一个简单的表达式语言的词法分析例子,了解Flex 的输入词法规范
文件的格式,以及Flex生成的词法分析器的接口形式和实现。你可以从 flex-2.5.35.tar.gz 的
1
examples 目录下获得更多使用Flex 的例子。
5、用Flex 生成PL/0 的词法分析器
用Flex 生成PL/0 的词法分析器getsym( ) ,修改 PL/0 编译器源代码src/pl0.c,使得 PL/0
编译器能调用Flex 生成的词法分析器来进行词法分析。
注意:
1) 要求用宏和条件编译来控制词法分析器的选择,即编译器是调用原有 pl0.c 中的
getsym( )还是调用Flex 生成的词法分析器;
2 )能快速编译和运行使用 1)中任意一种方式(原有pl0.c 中的getsym( )或Flex 生成
的词法分析器)构造的PL/0 编译器。
6、P2 提交的目录结构要求
按如下目录结构提交到学生自己的git 库的master 分支(缺省的分支就是master):
P2
|README 提交内容说明,包含如何编译运行所提交的内容等
|src/ 存放源程序文件(*.h, *.c)和Makefile
|doc/ 实验设计文档
|bin / 帮助快速编译和运行实验内容的shell 脚本文件
|test/ 存放测试程序
P3 PL/0 语言编译器的理解和C0 语言的语法定义
1、识别PL/0 编译器在词法分析阶段和语法分析
您可能关注的文档
- 国美电器杯第十届康腾全国高校学生案例分析大赛参赛细则.pdf
- 国立高雄大学资讯本能力检定计算机概论题库.PDF
- 国诚金融风险评报告(2014-08).pdf
- 国际共运史世界近史研究中的模糊点.PDF
- 国际化创新型英语专人才培养与语言学系列课程设置.ppt
- 国际标准智商测(题) 带答案.doc
- 国际汇率的多重形消除趋势波动分析.pdf
- 国际学术会议的语口语表达方式.PDF
- 国际红十字与红月运动标志.PDF
- 国际财务管理capter1.ppt
- 2026-2030中国电玩行业市场发展现状及发展趋势与投资前景研究报告.docx
- 2026-2030中国石油开采行业市场深度调研及发展趋势与投资前景研究报告.docx
- 2026-2030中国外加剂行业应用动态及需求趋势预测研究报告.docx
- 2026-2030中国万向轴行业运营态势与前景预测分析报告.docx
- 2026-2030中国奢侈女包行业销售前景预测与经营效益分析研究报告.docx
- 2026-2030中国氟气(F2)市场竞争策略及重点企业发展分析研究报告.docx
- 2025至2030中国移动式架车机行业市场占有率及有效策略与实施路径评估报告.docx
- 2025年零售业码垛机器人智能化升级路径分析.docx
- 2 农村一二三产业融合发展利益联结机制的跨区域合作模式研究教学研究课题报告.docx
- 2025年数字经济移动支付行业物流场景应用分析报告.docx
原创力文档


文档评论(0)