版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告(2013—2014年度第一学期)名称:编译技术课程设计B题目:小型编译器的设计与实现院系: 计算机系 班级: 学号: 学生姓名: 指导教师: 李继荣黄建才设计周数: 空 成绩: 日期:2014年1月4日《编译技术课程设计B》课程设计任务书一、 目的与要求通过设计、编写和调试词法分析程序,了解词法扫描器的组成结构、不同种类单词的识别方法,掌握由单词的词法规则出发,通过识别单词的状态转换图、利用程序实现词法扫描器的方法。通过设计、编写和调试语法分析程序,了解语法分析器的组成结构以及对文法的要求,掌握基于表达式文法的语法分析程序的实现方法。通过设计、编写和调试语法制导翻译程序,掌握从语句的语法出发,构造相应的语义子程序,实现基于算符优先分析的算术表达式的语法制导翻译。二、 主要内容1.词法分析器的设计与实现设计一个简单的词法扫描器。其输入是源程序字符串,输出是二元式(种别编码,单词的属性值),例如“=”符号的输出形式为&—),其中种别编码可参照书中单词表自拟某程序设计语言的单词表及其种别编码。实现方法参考书中函数和程序框架。2.语法分析器的设计与实现自上而下的语法分析方法:构造所用文法的预测分析表,实现方法参考书中算法描述。利用所得预测分析表采用自上而下的语法分析方法对输入串进行分析。例如,若根据书中算术表达式文法构造的预测分析表,那么对输入表达式i+i#进行语法分析,输出为分析过程:#Ei+i##E'Ti##E'Ti+i##E'T'Fi##E'T'Fi+i##E'T'ii##E'T'ii+i##E'T'##E'T'+i##E'##E'+i####E'T++i#自下而上的语法分析方法:构造所用文法的算符优先关系表,实现方法参考书中程序框架。利用所得算符优先关系表采用自下而上的语法分析方法对输入串进行分析。例如,若根据书中算术表达式文法构造算符优先表,对输入表达式i+i#进行分析,输出为:i +i#N +i#i##N+i##N+i#N+N ##N #3.语法制导翻译程序采用书中所示的翻译模式,对语法分析正确的程序在其语法分析的基础上,进行语义翻译工作。每当分析出某语法单位时,就调用对应产生式的语义子程序,完成相应的翻译工作。例如,表达式文法各个产生式的语义动作表示如下:EfE]+E2 {E.palce:=newtemp,gen(‘+',E^palce,E2.palce,E.palce)}EfE]*E2 {E.palce:=newtemp,gen(‘*',E^palce,E2.palce,E.palce)}Ef(E1) {E.palce:=E1.palce}Efi {E.palce:=i}三、 进度计划序号设计内容完成时间备注1词法分析器的设计与实现周一2语法分析器的设计与实现周二-周四3语法制导翻译器的实现周五四、 设计(实验)成果要求1.词法分析器:能够接收用户录入的一段源程序,并且通过语法分析正确输出此段程序中所包含的所有单词编码及其属性。2.语法分析器:对输入串进行自上而下或自下而上的语法分析,能够判断输入串是否某文法的句子。3.语义分析器:对输入源语言程序进行语法制导翻译工作。每当分析出某语法单位时,就调用相应产生式的语义子程序完成翻译工作。例如,输入i+i#,则输出为:(+,i,i,T1)五、 考核方式根据进度计划的时间安排统一验收所有程序。可根据学生不同的进度提前验收时间,但不可滞后验收时由学生讲解程序设计的思路和实现方法,教师根据讲解情况提出问题。其中,词法分析程序30分,语法分析程序50分,语义分析程序20分。学生姓名:指导教师:李继荣黄建才2013年12月29日一、课程设计(综合实验)的目的与要求通过设计、编写和调试词法分析程序,了解词法扫描器的组成结构、不同种类单词的识别方法,掌握由单词的词法规则出发,通过识别单词的状态转换图、利用程序实现词法扫描器的方法。通过设计、编写和调试语法分析程序,了解语法分析器的组成结构以及对文法的要求,掌握基于LL(1)文法或算符优先文法的语法分析程序的实现方法。通过设计、编写和调试语法制导翻译程序,掌握从语句的语法出发,构造相应的语义子程序,实现自定义语言的语法制导翻译。二、设计(实验)正文1、词法分析器的设计与实现1.1待分析的简单语言的词法(1)关键字:beginifthenwhiledoend(所有关键字都是小写字母)(2) 运算符和界符:*/+-::=><><=<>==;()#(3) 标识符(4) 数字(5)空格由空白和换行符组成。空格一般用来分隔关键字,标识符,数字,运算符和界符,词法分析阶段通常被忽略。1.2待分析的简单语言的词法单词符号种别码单词符号种别码单词符号种别码单词符号种别码begin1标识符10:17>=24if2数字11:二18=25then3*13>2026while4/14◊21(27do5+15<=22)28end6—16<23#01.3词法分析程序的功能输入:所给文法的源程序字符串。输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码;token为存放的单词自身字符串;sum为整型常数。1.4词法分析程序的算法思想:算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。1.4.1主程序示意图:主程序示意图见附录。其中初始包括以下两个方面:关键字表的初值。关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:Char*rwtab[6]={“begin”,“if”,“then”,“while”,“do”,“end”};程序中需要用到的主要变量为syn,token和sum1.4.2扫描子程序的算法思想:首先设置3个变量:①token用来存放构成单词符号的字符串;②sum用来整型单词;③syn用来存放单词符号的种别码。扫描子程序主要部分流程如图1-2所示。1.4.3词法分析程序步骤:输入要分析的字符串,以“#”结束。利用scaner函数分类,判断属于哪一类单词输出单词的类别和字符2、语法分析器的设计与实现待分析的简单语言的语法<非终结符>-><非终结符><运算符><非终结符>|<表达式><非终结符>-><非终结符>|<终结符>语法分析程序步骤输入文法,根据文法求出非终结符的FIRST集和LAST集求出终结符表算出算符有限关系,得出优先关系表输入单词串,以“#”结束,调用语法分析程序分析语法。如果是文法正确的句子,则输出成功信息,打印“结束”否则输出“false”语法分析程序的算法思想:chardata[20][20];//算符优先关系chars[100];//模拟符号栈scharlable[20];//文法终极符集charinput[100];//文法输入符号串charstr[20][10];//用于输入串的分析
intr;intr1;charst[10][30];intr;intr1;charst[10][30];charfirst[10][10];charlast[10][10];intfflag[10]={0};intlflag[10]={0};intdeal();intzhongjie(charc);intxiabiao(charc);voidout(intj,intk,char*s);voidfirstvt(charc);voidlastvt(charc);voidtable();//转化后文法规则个数//用来存储文法规则//文法非终结符FIRSTVT集//文法非终结符LASTVT集//标志第i个非终结符的FIRSTVT集是否已求出//标志第i个非终结符的LASTVT集是否已求出//对输入串的分析//判断字符c是否是终极符//求字符c在算符优先关系表中的下标//打印s栈//求非终结符c的FIRSTVT集//求非终结符c的LASTVT集//创建文法优先关系表3、语法制导翻译程序该算法在语法分析的基础上,将规约后产生的N变为临时变量Ei或中间变量Ti,当产生中间变量的四元式时,则输出该四元式。为实现算法,这里用到词法分析的思想,将输入字符串先通过词法分析,转化为各单词的属性值或地址值。此做法便于实现数组的输出和查看。三、课程设计(综合实验)总结或结论结论:词法分析器虽然可以区分标识符与关键字,但是不能识别出长度大于一个的标识符,也不能通过程序调入和调出txt文件。语法分析器可以自己输入文法个数和每一种文法,同时还可以求出每个非终极符的FIRST集和LAST集,然后自动生成算符优先关系表,也可以对输入的字符串进行分析,并显示出每一步进栈出栈的情况。总结:通过这次实验,我对编译原理这门专业必修课有了进一步的深层次了解,把理论知识应用于实验中,也让我重新熟悉了C++语言的相关内容,加深了对C++语言知识的深化和用途的理解。同时这次试验让我了解到如何设计、编制并调试词法、语法和语义分析程序,加深对词法分析,语法分析及语义分析原理的理解;熟悉构造词法分析,语法分析及语义分析程序的手工方式的相关原理,根据识别语言单词的状态转换图,使用C++直接编写分析程序。
四、参考文献[1]陈火旺《程序设计语言编译原理》国防工业出版社第三版2009年6月[2]鲁斌《编译技术基础教程》清华大学出版社2011年10月附录(设计流程图、程序、表格、数据等)1、流程图:1)词法2)语法:开始2、表格见上3、数据:词法:r曲IC:\v;indov/5\5/5iem52'.cmd.e:<eFleaseinputstring:beginif12ah+=:=#|C1,be<jin>C2,if><na>kn.2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中国电建集团铁路建设限公司招聘高频重点提升(共500题)附带答案详解
- X光检查车相关行业投资方案范本
- 2025中国建筑装饰集团华中公司中建幕墙限公司校园招聘120人高频重点提升(共500题)附带答案详解
- 2025中信建投证券股份限公司校园招聘高频重点提升(共500题)附带答案详解
- 2025下半年陕西延安事业单位招聘533人高频重点提升(共500题)附带答案详解
- 2025下半年浙江台州市仙居县国企业员工和行政事业单位编外人员招聘221人高频重点提升(共500题)附带答案详解
- 2025下半年四川眉山事业单位招聘(499人)历年高频重点提升(共500题)附带答案详解
- 2025上海文学创作中心拟聘人员历年高频重点提升(共500题)附带答案详解
- 2024年地坪材料加工定制合同范本3篇
- 2025上半年安徽事业单位联考高频重点提升(共500题)附带答案详解
- 期末综合素养评价一(试题)-2024-2025学年三年级上册科学教科版
- 动车运用所施工组织设计
- 新闻媒体编辑与发布规范流程
- 03S702钢筋混凝土化粪池-标准图集
- 耳鼻咽喉-头颈外科:绪论
- 统编版 七年级上册 第五单元 活动·探究 任务一 体会人与动物的关系 20 狼(教学设计)
- 特朗普第二任总统任期的国际经济影响-2024-10-宏观大势
- 2024年高中语文课内文言文复习《项脊轩志》课后练习、探究性阅读含答案解析翻译
- 2024年全国统一高考数学试卷(新高考Ⅰ)含答案
- 2025届浙江省杭州市学军中学高三下学期联合考试物理试题含解析
- 教科版五年级上册科学全册教学反思
评论
0/150
提交评论