if--else-语句-递归下降法-输出四元式

上传人:m**** 文档编号:548089520 上传时间:2022-09-09 格式:DOC 页数:24 大小:277.50KB
返回 下载 相关 举报
if--else-语句-递归下降法-输出四元式_第1页
第1页 / 共24页
if--else-语句-递归下降法-输出四元式_第2页
第2页 / 共24页
if--else-语句-递归下降法-输出四元式_第3页
第3页 / 共24页
if--else-语句-递归下降法-输出四元式_第4页
第4页 / 共24页
if--else-语句-递归下降法-输出四元式_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《if--else-语句-递归下降法-输出四元式》由会员分享,可在线阅读,更多相关《if--else-语句-递归下降法-输出四元式(24页珍藏版)》请在金锄头文库上搜索。

1、学 号: 0课 程设计课程名称 编译原理课程设计题 目F-ELS条件语句的翻译程序设计(递归下降法、输出四元式)学 院计算机科学与技术专 业计算机科学与技术班 级计算机101班姓 名指引教师陈天煌年1月日课程设计任务书学生姓名 专业班级: 计算机1001班 指引教师:陈天煌 工作单位:计算机科学与技术学院 题目: IF-ELE条件语句的翻译程序设计(递归下降法、输出四元式表达)初始条件:理论:学完编译课程,掌握一种计算机高档语言的使用。实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。规定完毕的重要任务: (涉及课程设计工作量及其技术规定,以及阐明书撰写等具体规定)(

2、1) 写出符合给定的语法分析措施的文法及属性文法。(2) 完毕题目规定的中间代码四元式的描述。(3) 写出给定的语法分析措施的思想,完毕语法分析和语义分析程序设计。(4) 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。(5) 设计报告格式按附件规定书写。课程设计报告书正文的内容应涉及:1 系统描述(问题域描述);2 文法及属性文法的描述;3 语法分析措施描述及语法分析表设计;4 按给定的题目给出中间代码形式的描述及中间代码序列的构造设计;5 编译系统的概要设计;6 具体的算法描述(流程图或伪代码);7 软件的测试措施和测试成果;8 研制报告(研制过程,本设计的评价、特点、局限

3、性、收获与体会等); 参照文献(按公开刊登的规范书写)。时间安排:设计安排一周:周1、周2:完毕系统分析及设计。周、周4:完毕程序调试及测试。周5:撰写课程设计报告。设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。设计报告书收取时间:设计周的次周星期一上午点。指引教师签名: 年 月 日IFLSE条件语句的翻译程序设计(递归下降法、输出四元式)1.系统描述(问题域描述) 本次实验使用windws XP的vial+软件,运用递归下降法实现F-ELE的条件语句的翻译程序设计,输出四元式表达,程序只能解决简朴的布尔体现式和最简朴的赋值语句,布尔体现式可以实现不小于和不不小于的辨认,也能解

4、决关系运算符=和X hen Y else Y; X-didi; -ddi; Y-idd;2.3属性文法的描述: 属性文法(也称属性翻译文法)是Knt在98年一方面提出的。它是在上下文无关文法的基本上,为每个文法符号(终结符或非终结符)配备若干有关的“特性”(称为属性)。3 语法分析措施描述及语法分析表设计;3.1语法分析措施描述: 在程序语言的语法定义中有许多采用递归定义。我们在对它进行语法分析时,编制的解决程序也采用递归的方式,可使其构造简朴易读。但由于频繁地调用子程序大大地减少了分析速度。递归下降法的重要思想是:对每个非终结符按其产生式构造写出相应语法分析子程序。由于文法递归相应子程序也递

5、归,子程序的构造与产生式构造几乎一致。因此称此种措施称为递归子程序法或递归下降法。程序是以一种个单词的形式向后读取,读取到f之后就开始执行的递归子程序,程序根据布尔体现式的真假,进而选择执行相应的分支,即如果布尔体现式为真,就执行then背面的赋值语句,如果布尔体现式为假,就执行lse背面的赋值语句,递归子程序E分别赋予布尔体现式真和假不同的地址,并将跳转相应的信息写到解决四元式的构造体数组中去,执行完后来,回到中继续执行背面的,读取到then之后,就表达当条件为真的时候,执行hen之后的赋值体现式,解决赋值的信息写到解决四元式的构造体数组中去,当读取到e之后,同理的执行当条件为假的时候的赋值

6、体现式,解决完了之后赋值相应的信息也写到解决四元式的构造体数组中去,这样反复执行就实现的对语法的分析。3.2语法分析表设计: 实验规定的是递归下降法,重要是调用不同的递归子程序,因此没有什么语法分析表,流程图在背面。4按给定的题目给出中间代码形式的描述及中间代码序列的构造设计; 4.1if-else四元式表达的描述:中间代码,也称中间语言,是复杂性介于源程序语言和机器语言的一种表达形式。四元式可当作中间代码的一种抽象形式。5编译系统的概要设计5.概要分析: 一方面在源程序相似的目录下创立一种t文档,并在文档中输入需要编译的程序即if-else语句,然后定义一种输入流文献,运用这个流文献中的op

7、e函数打开我需要编译的txt文献,在调用初始化多种变量的初始化函数。接着开始进行词法分析,词法分析程序的重要任务是对构成源程序的字符串从左到右的扫描,逐个字符地读入源程序字符并按照构词规则切提成一种一种具有独立意义的单词。并拟定其属性(如保存字、标记符、运算符、界线符和常量等)。再把它们转换成长度统一的原则形式属性字。词法分析是编译过程中的第一种阶段,在语法分析迈进行 。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得目前单词供语法分析使用。单词的分类(五类):1 核心字:由程序语言定义的具有固定意义的标记符。也称为保存字或基本字。 标记符:用来表达程序中多种名字的字符

8、串。3 常 数:常数的类型一般有整型、实型、布尔型、文字型。4界线符:如逗号、分号、括号等。但是我做的这个实验没有用到那么多东西,词法分析的有效字符串为: F,ELSE,TH, ,.=,=,和从到的单个标记符,但是程序还是相对来说比较简朴,复杂的体现式也许不能解决,后来会改善。而词法分析的成果就是将相应的单词赋予不同的属性值,运用词法分析表将成果保存起来,为背面的语义分析做准备。词法分析完毕之后就是把词法分析的成果都显示出来。语法分析的过程在上面已有了阐明,语法分析完了之后就是打印中间代码的四元式形式,根据上面的成果,四元式的数组里面已经存储了编译的具体信息,之需要按照相应的算符,将她们输出出

9、来,即可看到中间代码的四元式表达形式。5.2词法分析的具体实现:词法分析的具体过程如下,一方面将我们需要的编译的内容读到a这个数组之中,运用输入流函数的seg()和et()函数配合完毕,在运用for循环将a数组的的空格、回车等无用的内容去掉,从而将解决过后的转存到a1这个数组中,在运用的这个数组中符号书写的连贯性来进行进行词法分析。例如,then的写法是先写t,再写,再写e,再写,那么词法分析一种个单词来进行,发现a1i中存储的是t,在判断数组接下来的三个单元里面存储的分别是、e、,就可以辨认核心字ten了,其她的是一种道理,解决完毕之后就对每个单词的属性都做了出来,就实现了词法分析应当的功能

10、,6 具体的算法描述(流程图或伪代码)6.1词法分析的所有代码:词法分析读取下一单词是IF,调用E结束输出三地址四元式表达代码 输出词法分析初始化输入txt文献名E递归子程序读取下一单词语法分析:递归程序S置结束标志6.1程序代码/有效字符串: IF,ELSE,T, a,b,x,,=*文法: S-i=id | if thnSels S E id id/#inclueiosteamh#ilue#incldstrng.h#dfi$ASSIGN 249#efneIF50#def$THEN 21deie $ES 2define $GA 53#ne $LS 48efine $ID 24ypf stuct

11、 Wtoennt typ;ca ch;toen;tpedef enJP,JG,ASSI,ENDOpKnd;ypdf struintlbel;/标号O p;char par,pa;unionch ut;intddess;Fourabl;/四元式#fine AX_TK 256 /Wtoken表大小#fie MX_QUAD 256 /四元式数组大小Woken tonleMAX_OKEN;Fotable quaAXUAD;ittoeindex;/ken表索引int oalln;/token表有效长度indl;/四元式表有效长度nt quad_index;/四元式索引ntlabe;istrea ins;

12、ool init(cha filename255);bol cifax();od rnt();vERROR();voi (nt,int);vod(it,n,in);ool nextto();int newlabel();voi uffnxi();oi ritFurble();vid mn()coutfam;if(!init(fname))return;if(!ciffeni())eun;car ch;wie(1)if(ins.of()bk;ish;cothe esult ofFA analys :end;print();coutenendl;nextken();couThe rar:en;yufafenxi();couTheForTle as folowigs:edl;prntFourtable();int newlabel()trn lel+;boolini(car filname25)tken_inx0;total_len=0;quad_e=0;uadindx0;bl=100;inspen(fileame,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号