- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基础课程实践项PL0编译器的熟悉与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 编译器在词法分析阶段和语法分析
您可能关注的文档
最近下载
- Visio图标-visio素材-网络拓扑.ppt VIP
- 小红书代运营-标准化模板.pptx VIP
- 食材配送售后服务流程.docx VIP
- 量子场论v1 64-刘川.pdf
- 精品解析:2023-2024学年山东省滨州市滨城区统编版六年级下册期末考试语文试卷(解析版).docx VIP
- 医疗机构污水处理制度及整改措施.docx VIP
- 2024年秋国开新时代中国特色社会主义思想概论形考作业及答案.pdf VIP
- 人工智能教育应用(北师大)2024学堂在线雨课堂网课章节测试答案和期末考试答案.pdf VIP
- 精品解析:2023-2024学年山东省滨州市阳信县统编版六年级下册期末考试语文试卷(解析版).docx VIP
- 帮我早读书培训.ppt VIP
文档评论(0)