编译原理课程设计

编译原理课程设计

ID:5970235

大小:1.67 MB

页数:20页

时间:2017-12-30

编译原理课程设计_第1页
编译原理课程设计_第2页
编译原理课程设计_第3页
编译原理课程设计_第4页
编译原理课程设计_第5页
资源描述:

《编译原理课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编译原理课程设计课程名称编译原理学生学院计算机学院专业班级计算机科学与技术10(8)学号3110006211学生姓名武小亮指导教师杨劲涛2012年1月2日编译原理课程设计报告一、设计要求:基本内容(成绩范围:“中”、“及格”或“不及格”)(1)扩充赋值运算:*=和/=扩充语句(Pascal的FOR语句):①FOR<变量>:=<表达式>TO<表达式>DO<语句>②FOR<变量>:=<表达式>DOWNTO<表达式>DO<语句>其中,语句①的循环变量的步长为2,语句②的循环变量的步长为-2。(3)增加运算:++和--。选做内容(成绩评定范围扩大到:“优”和“良”)(1)增加类

2、型:①字符类型;②实数类型。(2)扩充函数:①有返回值和返回语句;②有参数函数。(3)增加一维数组类型(可增加指令)。(4)其他典型语言设施。二、课程设计中完成的内容有:(1)扩充赋值运算:*=和/=(2)扩充语句(Pascal的FOR语句):①FOR<变量>:=<表达式>TO<表达式>DO<语句>②FOR<变量>:=<表达式>DOWNTO<表达式>DO<语句>其中,语句①的循环变量的步长为2,语句②的循环变量的步长为-2。(3)增加运算:++和--。三、实验环境与工具:(1)计算机及操作系统:PC机,WindowsXP(2)程序设计语言:VC++6.0(3)教学型编译

3、程序:PL/0四、设计方案:1、结构说明:PL/0语言编译过程采用一趟扫描方式,以语法分析程序为核心,词法分析程序和代码生成程序都作为一个独立的过程,当语法分析需要读单词时就调用词法分析程序,而当语法分析正确需生成相应的目标代码时,则调用代码生成程序.此外,用表格管理程序建立变量、常量和过程标识符的说明与引用之间的信息联系.用出错处理程序对词法和语法分析研究遇到的错误给出在源程序中出错的位置和错误性质.当源程序编译正确时,PL/0编译程序自动调用解释执行,并按用户程序要求输入数据和输出运行结果.2、流程图:语法语义分析程序表格管理程序出错处理程序目标程序代码生成程序程序

4、词法分析程序程序编译和解释执行的结构图启动置初值调用getsym取单词调用block过程是否为源程序结束符源程序是否有错误调用解释过程interpret解释执行目标执行目标程序结束出错打印错误NNYYPL/0编译程序总体流程图3、词法分析词法分析是编译的第一个阶段,它的主要任务是从左向右逐个字符地对源程序进行扫描,产生一个个单词序列用于语法分析。PL/0词法分析程序GETSYM的功能是为语法分析提供单词用的,是语法分析的基础,把输入的字符串形式的源程序分割成一个个单词符号。经过词法分析程序分析出来的单词,对语言固有的单词只给出类别存放在全程变量SYM中,而对用户定义的单

5、词(标识符或常数)既给出类别又给值,其类别放在SYM中,值放在全程变量ID或全程变量NUM中,全部单词种类由编译程序定义的纯量类型SYMBOL给出,称为语法词汇表。词法分析器的分析过程:调用GETSYM时,它通过GETCH过程从源程序中获得一个字符。如果这个字符是字母,则继续获取字符或数字,最终可以拼成一个单词,查保留字表,如果查到为保留字,则把SYM变量赋成相应的保留字类型值;如果没有查到,则这个单词应是一个用户自定义的标识符(可能是变量名、常量名或是过程的名字),把SYM置为IDENT,把这个单词存入ID变量。查保留字表时使用了二分法查找以提高效率。如果Getch获

6、得的字符是数字,则继续用Getch获取数字,并把它们拼成一个整数或实数,然后把SYM置为INTEGER,并把拼成的数值放入NUM变量。如果识别出其它合法的符号(比如:赋值号、大于号、小于等于号等),则把SYM则成相应的类型。如果遇到不合法的字符,把SYM置成NUL。词法分析程序GETSYM将完成下列任务:(1)滤空格(2)识别保留字(3)识别标识符(4)拼数(5)拼复合词(6)输出源程序4、语法分析PL/0编译程序的语法分析采用了自顶向下的递归的子程序法。语法分析同时也根据程序的语义生成相应三元代码,并提供了出错处理的机制。语法分析主要由分程序分析过程(BLOCK)、常

7、量定义分析过程(ConstDeclaration)、变量定义分析过程(Vardeclaration)、语句分析过程(Statement)、表达式处理过程(Expression)、项处理过程(Term)、因子处理过程(Factor)和条件处理过程(Condition)构成。这些过程在结构上构成一个嵌套的层次结构。除此之外,还有出错报告过程(Error)、代码生成过程(Gen)、测试单词合法性及出错恢复过程(Test)、登录名字表过程(Enter)、查询名字表函数(Position)以及列出类PCODE代码过程(Listcode)作过语法分析

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。