您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > IF-ELSE条件语句的翻译程序设计(LL(1)法、输出四元式)
目录课程设计任务书...................................................................................................21.问题描述............................................................................................................32.问题分析及编译系统的概要设计....................................................................33.文法及属性文法的定义....................................................................................33.1文法..................................................................................................................................33.2属性文法的描述...............................................................................................................43.2.1属性文法的定义形式...............................................................................................43.2.2IFTHENELSE语句的属性文法..............................................................................44.语法分析方法描述及语法分析表设计............................................................54.1语法分析方法描述.........................................................................................................55.语法分析............................................................................................................86.中间代码形式的描述及中间代码序列的结构设计......................................127.语义分析及中间代码输出..............................................................................128.程序流程图......................................................................................................149.设计结果显示..................................................................................................1510.研制报告........................................................................................................1610.1研制过程....................................................................................................................1610.2本设计的评价、特点、不足、收获与体会等......................................1611.源程序清单....................................................................................................17武汉理工大学《编译原理》课程设计说明书1课程设计任务书学生姓名:专业班级:指导教师:高曙工作单位:计算机科学与技术学院题目:IF-ELSE条件语句的翻译程序设计(LL(1)法、输出四元式)初始条件:理论:学完编译课程,掌握一种计算机高级语言的使用。实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)写出符合给定的语法分析方法的文法及属性文法。(2)完成题目要求的中间代码四元式的描述。(3)写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。(4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。(5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:1系统描述(问题域描述);2文法及属性文法的描述;3语法分析方法描述及语法分析表设计;4按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;5编译系统的概要设计;6详细的算法描述(流程图或伪代码);7软件的测试方法和测试结果;8研制报告(研制过程,本设计的评价、特点、不足、收获与体会等);9参考文献(按公开发表的规范书写)。时间安排:设计安排一周:周1、周2:完成系统分析及设计。周3、周4:完成程序调试及测试。周5:撰写课程设计报告。设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。设计报告书收取时间:设计周的次周星期一上午10点。指导教师签名:2011年12月23日系主任(或责任教师)签名:2011年12月23日武汉理工大学《编译原理》课程设计说明书21.问题描述要求用LL(1)自顶向下分析方法及中间代码四元式,对IF-THEN-ELSE条件语句完成编译各阶段过程,包括词法、语法、语义等分析,并完成以下要求:(1)写出符合给定的语法分析方法的文法及属性文法。(2)完成题目要求的中间代码四元式的描述。(3)写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。(4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。(5)设计报告格式按附件要求书写。2.问题分析及编译系统的概要设计编译过程一般分为六个阶段的过程,可以由六个模块完成,它们称为词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序,此外,一个完整编译程序还必须包括“表格管理程序”和“出错处理程序”。这次实验涉及到词法分析、语法分析、语义分析及表格管理和出错管理。其中,词法分析至少要能识别关键字“if”、“then”和“else”,标识符(即自定义变量),数字,和运算符等等;语法分析要分析程序结构的合法性,即是否为文法的句子;语义分析要能够语法制导翻译出中间代码四元式并将其输出;表格管理是指符号表;出错处理是指在语法分析时,所有非文法句子的错误类型处理。3.文法及属性文法的定义3.1文法文法是用于描述语言的语法结构的形式规则(即语法规则)。这些规则必须是准确的、易于理解的以及有相当强的描述能力。由这种规则所产生的程序语言应有利于句子分析和翻译,而且,最好能通过这些规则自动产生有效的语法分析程序。IF-ELSE条件语句的文法如下所示:0.A-EB1.B-+EB|-EB|ε2.E-FT3.T-*FT|/FT|ε4.F-i|(E)武汉理工大学《编译原理》课程设计说明书3根据条件语句:IF〈布尔表达式〉THEN〈赋值语句〉ELSE〈赋值语句〉,描述相应的文法,其中非终结符集为VN(A,B,E,T,F),终结符集为VT(+,-,ε,*,/,i,(,))。E为布尔表达式,B为赋值语句。3.2属性文法的描述3.2.1属性文法的定义形式属性文法是在上下文无关文法的基础上,为每个文法符号(终结符或者非终结符)配备若干相关的“值”(与文法符号相关的属性)。在一个属性文法中,对应于每个产生式A→a都有一套与之相关联的语义规则,每规则的形式为:b:=f(c1,c2,…,ck)其中f是一个函数,而且或者①b是A的一个综合属性并且c1,c2,…,ck是产生式右边文法符号的属性或者②非终结符既可有综合属性也可有继属性,文法开始符号的所有继承属性作为属性计算前的初始值。3.2.2IFTHENELSE语句的属性文法其属性文法为:0.S-ifATHENBELSEC{S.chain:=merge(A.chain,B.chain,C.chain)}1.A-mropn{A.true:=nextstat;A.false=nextstat+1;backpatch(A.chain,nextstat);emit(“ifp”rop“qgoto—”)emit(“goto—”);}2.B-x=maropn{backpatch(B.chain,nextstat);emit(“x:=m”arop“n”);emit(“goto—”);}3.C-x=naropm{backpatch(C.chain,nextstat);emit(“x:=n”arop“m”);emit(“goto—”);}4.rop-={emit(“=”);}5.rop-{emit(“”);}6.rop-{emit(“”);}7.arop-+{emit(“+”);}8.arop--{emit(“-”);}武汉理工大学《编译原理》课程设计说明书49.arop-*{emit(“*”);}10.arop-/{emit(“/”);}4.语法分析方法描述及语法分析表设计4.1语法分析方法描述首先应该创建一个枚举类型的变量来存放一些关键字,enumkeyword{$right_paren,$left_paren,$mul,$div,$add,$sub,$fenhao,$equal,$IF,$THEN,$ELSE,$greater,$less,$id,$num,$end};再创建一个结构体,用来存放词法分析的结果,共有两个域,一个关键字域,表明他是什么类型,以及它自身的内容。这个词法分析程序比较简单,因为本身的程序就局限在if-else语句,所以保留字的类型我就只写了if、then和else三个;碰到数字开头的除了关键字就是标识符;碰到数字开头的就是数字;碰到界限符和操作符(因为引入的类型也很少),所以也很容易区别。在词法分析结束之后,就应该把分析的结果输出来。输出的格式是【(单词,类型编号)类型名】武汉理工大学《编译原理》课程设计说明书5其流程图为:词法分析程序如下:boolaccidence(){intk=0;charbuf[16];charch;while(1){源程序文件字符的分离单词的判断查找相应的表单词的类型判断调用不同类型的单词处理函数进行单词的处理产生类型码将中间单词和其类型码存入数组处理完毕武汉理工大学《编译原理》课程设计说明书6insch;if(ins.fail())break;while(ch==''){insch;}if(ch=='I'){insbuf;if(strcmp(buf,F)==0)tokentable[total_len++].type=$IF;}elseif(ch=='T'){insbuf;if(strcmp(buf,HEN)==0)to
本文标题:IF-ELSE条件语句的翻译程序设计(LL(1)法、输出四元式)
链接地址:https://www.777doc.com/doc-4213876 .html