欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    WHILE循环语句的翻译程序设计LR方法输出四元式.docx

    • 资源ID:3912932       资源大小:273.55KB        全文页数:21页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    WHILE循环语句的翻译程序设计LR方法输出四元式.docx

    1、WHILE循环语句的翻译程序设计LR方法输出四元式课程设计任务书.11系统描述.22文法及属性文法描述.2 2.1文法的描述.2 2.2属性文法的描述.23语法分析方法描述及语法分析表设计.2 3.1语法分析表设计.2 3.1.1文法的DFA.3 3.1.2LR(0)分析表.4 3.1.3LR(0)分析方法描述说明.44中间代码形式的描述及中间代码序列的结构设计.45编译系统的概要设计.5 5.1词法分析.5 5.2语法分析.6 5.3语法制导翻译.76详细的算法描述.87软件的测试方法和测试结果.148小结与体会.189参考文献.18本科生课程设计成绩评定表.20课程设计任务书学生姓名: 王

    2、世创 专业班级: 计算机0909班 指导教师: 高 曙 工作单位:计算机科学与技术学院 题目: WHILE循环语句的翻译程序设计(LR方法、输出四元式)初始条件:理论:学完编译课程,掌握一种计算机高级语言的使用。实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设计。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)写出符合给定的语法分析方法的文法及属性文法。(2)完成题目要求的中间代码四元式的描述。(3)写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。(4)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。

    3、(5)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:1 系统描述(问题域描述);2 文法及属性文法的描述;3 语法分析方法描述及语法分析表设计;4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;5 编译系统的概要设计;6 详细的算法描述(流程图或伪代码);7 软件的测试方法和测试结果;8 研制报告(研制过程,本设计的评价、特点、不足、收获与体会等);9 参考文献(按公开发表的规范书写)。时间安排:设计安排一周:周1、周2:完成系统分析及设计。周3、周4:完成程序调试及测试。周5:撰写课程设计报告。设计验收安排:设计周的星期五第1节课开始到实验室进行上机验收。设计报告

    4、书收取时间:设计周的次周星期一上午10点。指导教师签名: 2011年 12月 23日系主任(或责任教师)签名: 2011年 12月 23日1、系统描述通过设计、编制、调试一个WHILE循环语句的语法及语义分析程序,加深对语法及语义分析原理的理解,并实现词法分析程序对单词序列的词法检查和分析。用语法制导完成语义分析,并将形成的中间代码以四元式的形式输出。2 、文法及属性文法的描述21 文法的描述该文法的产生式如下所示:(1)S-while(B)E (2)E-AE (3)E-A (4)A-iPA (5)A-i (6)B-iTi (7)B-i其中while、( 、) 、 、 、P、T 、 ; 和i均

    5、为终结符,而S、A、B、E这些大写字母均为非终结符。T表示比较运算符,P表示算术运算符,i表示合法标识符。22 属性文法的描述对该文法的属性文法描述如下:(1) S-while(B)E prinf(if B goto E else goto next)(2) E-AE print(E.val = A.valE.val) (3) E-A print(E.val = A.val)(4) A-i P A print(A= i.Val P A.Val) (5) A-i; A.Val = i; (6) B-i T i print(B = i1.Val T i2.Val) (7) B-i B.Val =

    6、i3 、语法分析方法描述及语法分析表设计31 语法分析表设计 311 文法的DFA I0: S-SS-W (B)E312 LR(0)分析表状态ACTIONGOTOwhile()ioprop;#SEBA0S211Z2S33S544S65r7S76S97S88r69S14111010r3S14131011S1212r113r214S15S1715S141616r4r417r5r5312 LR(0)分析方法描述说明LR分析法的规约过程是规范推到的逆过程,所以LR分析过程是一种规范规约的过程。其分析过程为:由文法构造出该文法项目集,再根据项目集构造该文法的DFA,再判断是否有移进-规约和规约-规约冲突

    7、,若没有冲突则该文法为LR(0)的,若有冲突则该文法是SLR(1)的,最后可以构造出LR(0)分析表。然后根据LR(0)分析表进行语法分析,分析过程就是进栈和规约的过程。若能规约出开始符S,则语法正确。反之,语法错误。4 、中间代码形式的描述及中间代码序列的结构设计本系统中所采用的中间代码形式是四元式,是一种比较普遍采用的形式。四元式的四个组成成分是:算符op,第一和第二运算对象ARG1和ARG2及运算结果RESULT。运算对象和运算结果有时指用户自己定义的变量,有时指编译程序引进的临时变量。例如a:=b*c+b*d的四元式表示如下:1)(*,b,c,t1)2)(*,b,d,t2)3)(+,t

    8、1,t2,t3)4)(:=,t3,-,a)四元式对中间结果的引用必须通过给定的名字,也就是说,四元式的联系是通过临时变量实现的。将while( B rop C )goto L写成(jrop,B,C,L)本程序中所用到的四元式语句如下:1)形如(op,arg1,arg2,result)的赋值语句2)形如(jrop,B,C,L)的条件转移语句3)形如(=,arg1,-,result)的复写语句5、编译系统的概要设计5.1词法分析词法分析程序要做的工作是:从源程序的第一个字符开始,顺序读字符,一次读一个,根据所读进的字符识别各类单词,同时去掉源程序中的空白和注释。词法分析检查的错误主要是挑出源程序中

    9、出现的非法符号。所谓非法符号是指不是程序设计语言中允许出现的符号,就像自然语句中的错字。流程图如下:5.2语法分析语法分析是编译过程的核心部分。它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。流程图如下:输入串#cic1Sp#XiSi总 控 程 序输出ACTION表GOTO表栈结束其中SP为栈顶指针,Si为状态栈,Xi为文法符号栈。状态转换表内容按关系GOTOSi,X=Sj确定,改关系式是指当前栈顶状态为Si遇到当前文法符号为X时应转向状态Sj。X为终结符或非终结符。ACTIONSi,a规定了栈顶状态为Sj时遇到输入符号ci应该执行的动作。动作有以下四种

    10、可能:(1)移进:当Sj=GOTOSi,a成立,则把Sj移入到文法符号栈。其中i,j表示状态号。(2)规约:当在栈顶形成句柄为b时,则用b归约为相应的非终结符A,即当文法中有A-b的产生式,而b的长度为r,则从状态栈和文法符号栈中自栈顶向下去掉r个符号。并把A移入文法符号栈内,再把满足Sj=GOTOSi,A的状态移进状态栈,其中Si为修改指针后的栈顶状态。(3)接受acc:当归约到文法符号栈中只剩下文法的开始符号S时,并且输入符号串已结束即当前输入符是#,则为分析成功。(4)报错:当遇到状态栈顶为某一状态下出现不该遇到的文法符号时,则报错,说明输入串不是该分发能接受的句子。5.3语法制导翻译在

    11、语法分析过程中,随着分析的步步进展,根据每个产生式所对应的语义子程序(或语义规则描述的语义动作)进行翻译。属性文法的每个符号有属性,所以每个符号入栈时,必须连属性一起入栈,这样,栈符号就由文法符号及存放该符号属性的域所组成。由于属性类型不同,属性域存放的内容就要根据属性的类型来定。有的可能直接存放属性值,也有的存放的是指向属性值的指针。对于综合属性,其属性域不存放其属性值,而是存放一个指针,指向存贮该属性值的单元。对于继承属性,其属性域直接保存其属性值。继承属性的属性域刚入栈时为空,但是在该栈符号变成栈顶符号之前的某一时刻,它们必须接受相应的属性值,即在成为栈顶时,继承属性的属性域必须有值。6

    12、 、详细的算法描述Main() /主程序算法 open(save.txt); /打开输入文件 open(output.txt); /打开输出文件 Print(GS); /显示文法GS int check,over=0; int m,k; char chr; for(m=0;mMAX;m+) for(k=0;k”和“”两种条件,还有就是表达式的部分只支持简单的赋值语句的运算。 此外,在课程设计的过程中我又复习了一些C+编程的知识点,熟悉了一些常用的库函数,例如:字符函数库中的isalnum() 函数(如果参数是字母数字,即字母或数字,该函数返回true)的运用可以减少我们自定义一些基本函数的麻烦

    13、。conio.h头文件 ,conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。iomanip.h是I/O流控制头文件,用于格式化的输出。还熟悉了关于Stack类的函数的运用,剩去了我们自己定义stack函数的麻烦,只需在头文件中加入#include即可。 总结下来,此次课程设计使我获益匪浅,在实践中点点滴滴的提升了自己的逻辑分析和编程以及调试程序的能力。9 参考文献教材:1张素琴、吕映芝、蒋维杜、戴桂兰等编译原理(第二版)清华大学出版社2005年2月参

    14、考书:1何炎祥编译原理(第二版)华中科技大学出版社2005年8月2胡伦骏编译原理(第2版)电子工业出版社2005年2月3胡元义等编译原理实践教程西安电子科技大学出版社2002年1月4钱能著,C程序设计教程,北京:清华大学出版社,2002.7本科生课程设计成绩评定表班级:计科0909班姓名:王世创学号:0120910340913序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:2012 年 1月日


    注意事项

    本文(WHILE循环语句的翻译程序设计LR方法输出四元式.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开