ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:282.19KB ,
资源ID:13194876      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13194876.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理课程设计--将FOR语句转换成四元式的程序实现Word文档下载推荐.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理课程设计--将FOR语句转换成四元式的程序实现Word文档下载推荐.docx

1、3.2 各模块设计8第 4 章程序测试94.1 测试方法94.2 测试结果9第五章结论16参考文献17附录程序清单1718合肥工业大学课程设计任务书设 计题 目将 FOR 语句转换成四元式的程序实现成绩主要内容设计内容及要求:设计一个语法制导翻译器,将 FOR 语句翻译成四元式。要求:先确定一个定义 FOR 语句的文法,为其设计一个语法分析程序,为每条产生式配备一个语义子程序,按照一遍扫描的语法制导翻译方法,实现翻译程序。对用户输入的任意一个正确的 FOR 语句,程序将其转换成四元式输出(可按一定格式输出到指定文件中)。指导教师意见该生能按时完成课程设计任务书所规定的程序设计,综合运用所学知识

2、独立分析和解决问题的能力。程序设计方案。论文论述, 文理,格式。程序运行结果。程序验收时回答问题。签名:第一章 概述1.1 设计内容1.2 设计要求对用户输入的任意一个正确的 FOR 语句,程序将其转换成四元式输出(可按一定格式输出到指定文件中)。第二章 设计的基本原理2.1 词法分析设计词法分析算法,每当语法分析程序需要一个单词时,则调用该算法函数。词法分析程序每调用一次,便从源程序文件中读入一些字符,直到识别出一个单词,送给语法分析器2.2 语法分析采用递归下降方法,为对应文法中的每个非终结符编写一个递归过程, 每个过程的功能是识别由该非终结符推出的串。若输入串是给定文法的句子,则从文法的

3、开始符号出发一定能推导出与输入的单词串完全相同的句子。2.3 语义分析在语法分析的同时可由语法分析程序调用相应的语义子程序进行语义处理,完成附加在所使用的产生式上的语义规则描述,并生成四元式的中间代码形式。2.4 文法描述递归下降法要求文法满足 LL(1)文法,则消除左递归后的文法如下: start spsc eofspsc for parse ; parse ; parse spsc list |elist parse;listparse cdexpr morecdexprs morecdexprs = cdexpr morecdexprscdexpr cdsexpr morecdsexpr

4、s morecdsexprs | cdsexpr morecdsexprscdsexpr cdterm morecdterms morecdterms & cdterm morecdtermscdterm cdsterm morecdsterms morecdsterms = cdsterm morecdsterms| != cdsterm morecdstermscdsterm expr moreexprs moreexprs expr moreexprs| expr term moreterms moreterms + term moreterms| - term moretermster

5、m factor morefactors morefactors * factor morefactors| / factor morefactorsfactor !factor| (cdexpr)| id| num图 1 FOR 循环语句文法描述2.5 属性文法描述将语义规则附加在文法产生式的合适位置上,构成属性文法如下:start spsc eofparse cdexpr morecdexprsmorecdexprs = cdexpr print(“=”) morecdexprscdexpr cdsexpr morecdsexprsmorecdsexprs | cdsexprprint(“

6、|”)morecdsexprscdsexpr cdterm morecdtermsmorecdterms & cdtermprint(“&”) morecdtermscdterm cdsterm morecdstermsmorecdsterms = cdsterm print(“=”) morecdsterms= cdsterm print(“!=”) morecdstermscdsterm expr moreexprsmoreexprs expr print(“”) moreexprs= exprprint(“= exprprint(“expr term moretermsmoreterms

7、 + term print(“+”) moreterms| - term print(“-”) moreterms| eterm factor morefactorsmorefactors * factor print(“*”) morefactors| / factor print(“/”) morefactors factorprint(“!”)| idprint(id.lexeme)| numprint(num.value)图 2 FOR 循环语句属性文法描述2.6 语法分析方法描述递归下降分析方法是一种自顶向下语法分析方法,其目的是从文法的 开始符号开始,根据输入字符串进行最左推导,试

8、图推导出给定的字符串。或者说,从根节点(文法开始符号)开始,自上而下,从左到右地为输入 字符串建立一棵语法树,并以预先确定的顺序创建语法树的节点。递归下 降分析法可能需要回溯,即需要重复地扫描输入。递归子程序法的实现思想是对应每个非终结符编写一个递归过程,每个过程的功能是识别由该非终结符推出的串,当某非终结符的产生式有多个候选式时,能够按照 LL(1)形式唯一地确定选择某个候选式进行推导, 因此首先要消除左递归。其文法及属性文法如图 1 和图 2 所示。由于递归下降法对每个过程可能存在直接或间接的递归调用,所以对某个过程在退出之前可能又要被调用,因此有些信息需要保留,通常在入口时需保留某些信息

9、,出口时需恢复。由于递归过程是遵循先进后出规律,通常开辟栈来处理。2.7 操作符优先级优先级操作符类型操作对象的个数结合性1()逻辑运算符左右2!逻辑非运算符单目运算符右左3*,/算术运算符双目运算符4+,-5,=关系运算符在对 for 循环语句进行翻译时,涉及到对赋值表达式和布尔表达式语句的翻译。在文法的描述中给出了算术运算符、关系运算符和逻辑运算符之间的优先级关系,其结合性由下表所示:6=,!7逻辑与运算符8|逻辑或运算符9赋值运算符2.8 中间代码形式的描述常见的中间代码形式有逆波兰记号,三元式,四元式和树形表示。本课题设计输出的中间代码的表示方法是四元式。它是带有四个域的记录结构, 这

10、四个域分别称为算符 op,第一运算对象 arg1,第二运算对象 arg2 及结果result。域 op 包含一个代表运算符的内部码。例如 x = y op z 的四元式表示为(op,y,z,x),即将 y 置于 arg1 域,z 置于 arg2 域,x 置于 result 域,= 置于算符域 op,如果 op 是单目运算符,例如非!( x = !y )的四元式表示形式中不用填 arg2。通常,四元式中的 arg1,arg2 和 result 的内容都是一个指针,此指针指向有关名字的符号表入口。这样,临时变量名也要填入符号表中。2.9 中间代码序列的结构设计parse1型如 forparse1;

11、parse2;parse3list的中间代码序列的结构设计如下:TRUEFALSEparse3parse2END图 3 中间代码序列结构设计第三章 程序设计3.1 总体方案设计源文件中间代码语法分析出错处理语义分析词法分析本程序采用递归下降的方法实现 FOR 循环语句的翻译,并以四元式的中间代码形式输出。经过词法分析,语法分析,同时执行语法制导翻译将中间结果表达出来,然后通过一个函数转化成要求的四元式结构的中间代码。上述的这个过程在一遍扫描过程中完成:在语法分析的过程中调用词法分析来不断的分解出下一个句柄;在用递归下降方法进行语法分析的同时进行中间形式数据的保存,在分析出操作符号的同时结合当前栈中的数据输出四元式。3.2 各模块方案设计程序中各阶段的功能如下:(1) 词法分析阶段对源程序流进行扫描,每识别出一个单词,若是标识符,则到符号表中查找,如果符号表中没有此标识符的记录,那么将此标识符插入符号表。最后按照单词其所属的类别,把类标识返回,作为语法分析阶段的输入。词法分析算法在 symr.h 头文件中: void symbolnum();void symbolchar(); void symbolothers(); int Symbolanalysis();(2) 语法及语义分

copyright@ 2008-2022 冰豆网网站版权所有

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