欢迎来到天天文库
浏览记录
ID:9795802
大小:180.00 KB
页数:7页
时间:2018-05-10
《循环语句的语法分析及语义分析程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、学号:0120510680224课程设计题目WHILE循环语句的翻译程序设计(递归下降法、输出三地址表示)学院计算机科学与技术学院专业软件工程班级0502班姓名杨松林指导教师彭德巍2008年6月21日循环语句的语法分析及语义分析1.设计题目基于递归下降分析法的循环语句WHILEEDOS1的语法及语义分析程序,其中E为布尔表达式,S1为赋值语句。输出的中间代码选用三地址码。2.摘要和关键字摘要:递归下降分析法是确定的自上而下的分析法,这种分析法要求文法是LL(1)文法。他的基本思想是对文法中的每个非终结符编写一个函数(或子程序)。每个函数的功能是识别由该非终结符所表示
2、的语法成分。根据递归下降的方法,同时利用C++语言对输入的WHILEEDOS1循环语句进行文法分析,并输出其对应的三地址码。关键字:递归下降分析法,LL(1)文法,语法分析Abstract:Recursivedropanalysisisthetop-downanalysistodeterminethatsuchanalysisisrequiredgrammarLL(1)grammar.It’sbasicideaofgrammarattheendofeachnon-preparationofafunction(orsubroutine).Eachfunctionist
3、oidentifythefunctionexpressedbytheNGOsattheendofthegrammaticalelements.Accordingtodroptherecursivemethod,usingtheC++languagetoinputitsrealgrammaranalysis,NBL(alanguageinventedbyLukasiewicz)istherealoutputofitscounterparts.Keywords:Recursivedropanalysis,LL(1)grammar,syntaxanalysis3.正文3.
4、1引言递归下降分析法是一种自上而下的语法分析方法,所谓自上而上分析法,就是从文法的开始符号出发,根据文法规则正向推导出给定句子的一种方法。在用递归下降分析法时要注意所选用的文法必须是LL(1)文法。3.2需求分析WHILE〈布尔表达式〉DO〈赋值语句〉,其中:(1)选择递归下降法法完成以上任务,中间代码选用三地址码。(2)写出符合分析方法要求的文法,给出分析方法的思想,完成分析程序设计。程序设计的环境和工具为Windows环境下的VisualC++。3.3数据结构设计3.3.1文法的描述终结符:有VT={WHILE、<、>、*、/、+、-、=、DO、、id、digi
5、t、;}非终结符:有VN={S,E,F,M,T,P,B}开始符号:开始符号S={S}产生式:S->id=M
6、WHILEEdoSE->B
7、B>BM->TF
8、TF->+TF
9、-TF
10、εT->BP
11、BP->*BP
12、/BP
13、εB->id
14、digit3.3.2简要分析与概要设计出现在循环语句WHILEEDOS1中的布尔表达式E,它的作用在于控制对S1的选择。作为转移条件的布尔式E,我们可以赋予它“出口”,出向S1。本程序采用递归向下分析法,在语法分析的过程中输出中间代码。逆波兰代码采用结构体存放,在输出逆兰式函数中,分别定义操作数数组nbl1[10]和操作符数组nbl2[
15、20],并利用二重循环逆向输出三地址码。定义存储结构及函数如下:#defineMAX_TOKEN256//Token表大小词法分析#defineMAX_QUAD256//三地址码数组大小Tokentokentable[MAX_TOKEN];//建立词法表Quadquad[MAX_QUAD];//建立三地址码表boolcifa();//词法分析函数voidprint();//词法输出函数voidyuyi();//语义分析函数voidprintQuad();//输出三地址码表printQuad();//输出三地址码本程序对词法分析进行了简化,只能输入WHILE,DO,〉
16、,<,=,;,a-z,0-9,A-Z且是从文件输入。作为条件语句可是B>B,B
此文档下载收益归作者所有