基础课程实践项目P0编译器的熟悉与C0语言编译器的构造.PDFVIP

基础课程实践项目P0编译器的熟悉与C0语言编译器的构造.PDF

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基础课程实践项目P0编译器的熟悉与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 编译器在词法分析阶段和语法分析

文档评论(0)

jyf123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档