SNL编译器设计实验报告.doc

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
30 - 编译原理课程设计实验报告 目录 第一部分 实验成果统计表 …………………………………………………………1 第二部分 实验简介 …………………………………………………………………2 第三部分 词法分析 …………………………………………………………………3 第四部分 语法分析 …………………………………………………………………6 4.1 LL(1)法语法分析…………………………………………………………7 4.2 递归下降法语法分析……………………………………………………10 第五部分 语义分析…………………………………………………………………19 第六部分 程序测试…………………………………………………………………22 第七部分 实验总结与体会…………………………………………………………28 第一部分 实验成果统计表 姓名 性别 班级 学号 所占比例 个人成绩 任务分工:(请用小四号宋体填写) 词法分析部分程序的调试与实现; LL(1)语法分析部分程序的调试与实现; 递归下降语法分析部分程序的调试与实现; 语义分析部分程序的调试与实现; 成绩评定: 词法分析 递归下降 LL(1) 语义分析 团队成绩 教师签章 备注 填写说明: 1、请将首页红色部分信息填全,其中:班级为2位数字,保留首位的0;学号为8位数字,计算机科学与技术学院以53开头;所占比例为百分数,精确到个位数,且所有人的所占比例之和为100%;不足四人的分组请保留后面的多余空行,请勿修改该表的结构。 2、请根据实际情况填写任务分工部分,主要任务包括:编译系统的总体分析与设计,四个具体功能的设计与实现,对应的测试与验证过程(报告正文需要列出若干组具体测试样例与对应结果),系统界面的设计与美工,以及辅助工具、视图和文件等。 3、成绩评定部分由指导教师填写,请勿填写和修改。 第二部分 实验简介 本实验中实现了SNL编译系统中的词法分析、语法分析和语义分析。其中语法分析包括递归下降分析方法和LL(1)分析方法。 词法分析,以源程序为输入,生成单词的内部表示TOKEN序列。 语法分析,以TOKEN序列为输入进行语法分析,并生成整个源程序的语法分析树。在SNL编译程序中,采用了两种语法分析方法实现:LL(1)和递归下降法。两种语法分析的结果是一样的。 语义分析,以语法树为输入生成标识符的属性符号表以及相关的各类信息表,如数组信息表,并进行相关的语义检查。 它们三者的关系如下: LL(1) LL(1) 语法分析 递归下降 语法分析 词法分析 语义分析 第三部分 词法分析 源程序一般表现为字符串(机器语言称其为ASCII码)序列的形式,而编译程序的翻译工作应该在单词一级上进行,这与自然语言的翻译理解过程是类似的。因此要进行编译工作,首先要把源程序的字符序列翻译成单词序列。 词法分析是编译过程的第一阶段。它的任务就是对输入的字符串形式的源程序按顺序进行扫描,根据源程序的词法规则识别具有独立意义的单词(符号),并输出与其等价的TOKEN序列。TOKEN是单词(符号)的内部表示。完成词法分析任务的程序称为词法分析程序,通常也称为词法分析器或扫描器(scanner)。 TOKEN是单词在编译程序处理过程中的一种内部表示,也是词法分析程序对程序中各类单词进行处理之后的输出形式。对于一种语言而言,如何对它的单词进行分类,每一类单词的TOKEN数据结构的形式如何,都没有固定的模式,可以随编译程序的不同而不同。通常TOKEN的结构可以分成两部分,单词的语法信息和语义信息。其中语法信息记录的是这个单词的种类,语义信息则记录着这个单词的具体信息。这样,就能为以后的语法分析和语义分析处理单词做好准备。 SNL语法分析对每类单词的分析结果的TOKEN结构为三元组(词法信息、语义信息以及该单词在源程序中的行号)。 本SNL编译器单词的内部表示如下: 行号(便于出错处理) 行号(便于出错处理) TOKEN的内部表示语法信息及其字符串表示 TOKEN的内部表示 语法信息及其字符串表示 语义信息及其字符串表示 语义信息及其字符串表示 SNL语言的单词分类如下: (1):保留字 保留字一般是由语言系统自身定义的, SNL语言中的保留字有program,while,if,fi等等。 (2):标识符 用来标识程序中各个对象的名称。由用户自己定义用来表示变量名,数组名或者过程名等。SNL语言中标识符由字母开头,字母、数字的任意组合组成的。 (3):常量 用来表示各类常数。如字符型常量,实行常量,布尔常量等。 (4):运算符 表示程序中算术运算、逻辑运算、字符运算的确定字符或字符串。SNL语言中的运算符有+,—,*,/,和:=六种运算符。 (5):界限符 包括逗号分号等。SNL语

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档