编译原理实验报告..docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理实验报告 PL/0 语言编译器分析 词法分析实验 递归下降语法分析实验 LL(1)分析法语法分析实验 教师: 姓名: 班级: 学号: PL/0 语言编译器分析实验报告 一、实验目的 通过阅读与解析一个实际编译器(PL/0语言编译器)的源代码, 加深对编译阶段(包括词法分析、语法分析、语义分析、中间代 码生成等)和编译系统软件结构的理解,并达到提高学生学习兴趣的目的。 二、实验要求 (1)要求掌握基本的程序设计技巧(C语言)和阅读较大规模程序 源代码的能力; (2)理解并掌握编译过程的逻辑阶段及各逻辑阶段的功能; (3)要求能把握整个系统(PL/0语言编译器)的体系结构,各功能 模块的功能,各模块之间的接口; (4)要求能总结出实现编译过程各逻辑阶段功能采用的具体算法与技术。 三、实验步骤 (1) 根据PL/0语言的语法图,理解PL/0语言各级语法单位的结构,掌握PL/0语言合法程序的结构; (2)从总体上分析整个系统的体系结构、各功能模块的功能、各模块之间的调用关系、各模块之间的接口; (3)详细分析各子程序和函数的代码结构、程序流程、采用的主要算法及实现的功能; (4)撰写分析报告,主要内容包括系统结构框图、模块接口、主要算法、各模块程序流程图等。 四、报告内容 1、 PL/0 语言语法的 BNF 表示-1,对语法描述图的解析 程序 → 程序体. 程序体 → [常量说明部分][变量说明部分][过程说明部分]语句 常量说明部分 → const 常量定义{,常量定义}; 常量定义 → 标识符=无符号整数 无符号整数 → 数字{数字} 变量说明部分 → var 标识符{,标识符}; 标识符 → 字母{字母|数字} 过程说明部分 → 过程首部程序体{;过程说明部分}; 过程首部 → procedure 标识符; 语句 → 赋值语句|条件语句|当型循环语句|过程调用语句| 复合语句 赋值语句 → 标识符:=表达式 复合语句 → begin 语句序列 end 语句序列 → 语句{;语句} 条件 → 表达式关系运算符表达式| odd 表达式 表达式 → [+|-]项{加法运算符项} 项 → 因子{乘法运算符因子} 因子 → 标识符|无符号整数|(表达式) 加法运算符 → +|- 乘法运算符 → *|/ 关系运算符 → =|||=||= 条件语句 → if 条件 then 语句 过程调用语句 → call 标识符 当型循环语句 → while 条件 do 语句 字母 → a|b|...|x|y|z 数字 → 0|1|2|...|8|9 2、PL/0编译程序的总体设计 ? 其编译过程采用一趟扫描方式 ? 以语法、语义分析程序为核心 ? 词法分析程序和代码生成程序都作为一个过程, ? 当语法分析需要读单词时就调用词法分析程序, ? 而当语法、语义分析正确, ? 需要生成相应的目标代码时,则调用代码生成程序。 ? 表格管理程序实现变量, ? 常量和过程标识符的信息的登录与查找。 ? 出错处理程序, ? 对词法和语法、语义分析遇到的错误给出在源程序中出错的位置和与错误性质有关的编号,并进行错误恢复。 3、PL/0编译程序结构 词法分析程序语法语义分析程序 词法分析程序 语法语义分析程序 代码生成程序 表格管理程序 出错处理程序 PL/0源程序 目标程序 4、详细分析 4.1 主要函数功能 4.2 语法调用关系图 程序 pl0 程序 pl0 分程序block 语句statement 条件condition 表达式 项 term 因子 factor Pl/0词法分析程序Getsym 识别的单词: (类别,值) 保留字:如:BEGIN、 END、 IF、 THEN等 运算符: 如:+、-、*、/、:=、#、=、=等 标识符: 用户定义的变量名、常数名、过程名 常数: 如:10、25、100等整数 界符: 如:‘,’、‘.’ 、‘;’ 、‘(’ 、‘)’等 Getsym用到三个单元: SYM:存放单词类别 ID:存放标识符的值 NUM:存放整数的值 词法分析过程GETSYM 所要完成的任务: 滤空格 识别保留字 识别标识符 拼数 识别单字符单词(,等) 拼双字符单词(=,等) 输出源程序 读字符子程序(getch) PL/0编译程序语法分析的设计与实现 自顶向下的语法分析 递归子程序法

文档评论(0)

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

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

1亿VIP精品文档

相关文档