




免费预览已结束,剩余6页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录引言.1第一章 概述.2 1.1设计题目及内容.2 1.2设计环境.2第二章 设计的基本原理.3 2.1 LR分析器的基本理.3 2.2 LR分析器工作过程算法.3 第三章 程序设计.5 3.1总体方案设计.5 3.2各模块设计.5 第四章 程序测试和结论以及心得. .7参考文献. 7 附录 程序清单.8一 概述11设计题目及内容 设计题目:根据LR分析表构造LR分析器内容:已知文法G:(1)EE+T (2) ET (3) TT*F (4) TF (5) F(E) (6) FILR分析表:状态 ACTION(动作)GOTO(转换) I + * ( ) # E T F0S5S41231S6Acc2R2S7R2R23R4R4R4R44S5S48235R6R6R6R66S5S4937S5S4108S6S119R1S7R1R110R3R3R3R311R5R5R5R5注:sj 表示把下一状态j和现行输入符号a移进栈rj 表示按第j个产生式进行规约acc表示接受空格表示 出错标志,报错根据以上文法和LR分析表,构造LR分析器,并要求输出LR工作过程。12设计环境:硬件设备:一台PC机软件设备:Windows 2000/XP OS ,VC+6.0 实现语言:C语言二 设计的基本原理21 基本原理:1LR方法的基本思想:在规范规约的过程中,一方面记住已移进和规约出的整个符号串,即记住“历史”,另一方面根据所用的产生式推测未来可能碰到的输入符号,即对未来进行“展望”。当一串貌似句柄的符号串呈现于分析栈的顶端时,我们希望能够根据记载的“历史”和“展望”以及“现实”的输入符号等三个方面的材料,来确定栈顶的符号串是否构成相对某一产生式的句柄。2LR分析器实质上是一个带先进后出存储器(栈)的确定有限状态自动机。3LR分析器的每一步工作是由栈顶状态和现行输入符号所唯一决定的。4为清晰说明LR分析器实现原理和模型:LR分析器的核心部分是一张分析表。这张分析表包括两个部分,一是“动作”(ACTION)表,另一是“状态转换”(GOTO)表。他们都是二维数组。ACTION(s,a)规定了当状态s面临输入符号a时应采取什么动作。GOTO(s,X)规定了状态s面对文法符号X(终结符或非终结符)时下一状态是什么。显然,GOTO(s,X)定义了一个以文法符号为字母表的DFA。 每一项ACTION(s,a)所规定的动作不外是下述四种可能之一:(1)移进把(s,a)的下一个转态s = GOTO(s,X)和输入符号a推进栈,下一输入符号变成现行输入符号。(2)规约指用某一产生式A 进行规约。假若的长度为r,规约的动作是A,去除栈顶的r个项,使状态Sm-r 变成栈顶状态,然后把(Sm-r,A)的下一状态s = GOTO(Sm-r,A)和文法符号A推进栈。规约动作不改变现行输入符号。执行规约动作意味着(= Xm-r+1Xm)已呈现于栈顶而且是一个相对于A的句柄。(3)接受宣布分析成功,停止分析器的工作。(4)报错发现源程序含有错误,调用出错处理程序。22 LR分析器工作过程算法描述:一个LR分析器的工作过程可看成是栈里的状态序列,已规约串和输入串所构成的三元式的变化过程。分析开始时的初始三元式为(s0, #, a1a2an#)其中,s0为分析器的初态;为句子的左括号;a1a2an为输入串;其后的为结束符(句子右括号)。分析过程每步的结果可表示为(s0s1sm, #X1X2Xm ai, ai+1an#)分析器的下一步动作是由栈顶状态sm和现行输入符号ai所唯一决定的。即,执行ACTION(sm,ai)所规定的动作。经执行每种可能的动作之后,三元式的变化情形是:(1) 若ACTION(sm,ai)为移进,且s = GOTO(sm,ai),则三元式变成:(s0s1sm s, #X1X2Xm ai, ai+1an#)(2) 若ACTION(sm,ai)= A,则按照产生式A进行规约。此时三元式变为(s0s1sm s, #X1X2Xm A, ai ai+1an#) 此处s = GOTO(Sm-r,A),r为的长度, = Xm-r+1Xm。(3) 若ACTION(sm,ai)为“接受”,则三元式不再变化,变化过程终止,宣布分析成功。(4) 若ACTION(sm,ai)为“报错”,则三元式的变化过程终止,报告错误。一个LR分析器的工作过程就是一步一步的变换三元式,直至执行“接受”或“报错”为止。 三 程序设计31总体设计方案:1建模:(1)分析表建模:构造一个int 型二维数组table139,用于存放LR分析表。并初始化。作者这样规定:011 表示 状态sj,其中0对应s0,1对应s12126表示 规约rj,其中21对应r1,22对应r212表示 “接受”-1表示 规约出错,报错(2)栈建模:建立一个int 型状态栈,该栈为顺序栈。建立一个char型符号栈和一个char型输入串栈,该栈为顺序栈。(3)规约表达式建模:建立一个rule型结构,成员变量为char型非终结符和int型表示规约第几条表达式。2程序设计关键注意环节:(1)在输入串(句子)输入的过程中,涉及到一个压栈的问题。但是输入串压入的字符顺序刚好与原理中的字符串模型刚好相反,这样需要先弹出的反而在栈底。为了既要保证字符串输入,又要让输入的字符串存储顺序与输入的字符串相反。采取以下措施:先将输入的字符串压入符号栈symbol中,然后符号栈弹出的字符再压入输入串栈instr中,这样实现了输入串的倒序存储。(2)状态栈status_stack(status_p)和符号栈symbol_instr(symbol_p)输出(遍历)过程均采取自栈底到栈顶的顺序,而输入串栈 symbol_instr(instr_p)则是采取自栈顶到栈底的顺序输出。32各模块设计:1栈设计:构造一个int型“状态栈”status和一个char型“符号输入串栈” symbol_instr。该栈包括初始化该栈init_status(),压栈push(),弹栈pop(),取栈顶元素get_top(),自栈底到栈顶遍历元素out_stack1()和自栈顶到栈底遍历元素out_stack2().2LR分析器工作过程算法设计:构造一个状态转换函数实现状态转换int goto_char(status *status_p,symbol_instr *instr_p)构造一个移进规约函数实现移进规约动作void action(status *status_p,symbol_instr *symbol_p,symbol_instr *instr_p)构造一个打印LR分析器的工作过程函数实现输出void print(status *status_p,symbol_instr *symbol_p,symbol_instr *instr_p)3流程图: 初始化状态栈,符号栈,输入串栈输入串各字符压栈 求下一状态符号ii = goto_char(status_p,instr_p)规约出错!异常中止!i = = -1 ?规约成功!退出i = = 12 ?规约动作:1 求出i对应规约规则右部字符串长度x = ri-21.y2 在符号栈和状态栈中弹出x个字符。然后将该规约规则左部压入输入串栈i0 & i=11 移进动作:1 将现状态i压栈push(status_p,i)2 将当前输入串字符压入符号栈a = pop(instr_p)push(symbol_p,a)打印该步工作过程 LR分析器设计流程图四 程序测试和结果以及心得1测试结果:见附录 经过测试,输入各种各样的正确句子,均能正确规约。而且,输入错误的句子,也能正确报错。2心得:附录程序源代码:四:主程序:#includestatus_stack.h#includesymbol_instr_stack.h#includelr.h/打印LR分析器的工作过程void print(status *status_p,symbol_instr *symbol_p,symbol_instr *instr_p)int i;out_stack(status_p);for(i=0;itop;i+)printf( );out_stack1(symbol_p);for(i=0;i=0 & i=21 & i=26)x = ri-21.y;for(j=0;jtop != 0) x = pop(symbol_p);push(instr_p,x);printf(nn);/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年项目管理实战高级面试模拟题及应对策略
- 2025年安全生产知识题库及答案解析
- 2025年职业安全卫生培训选择题及答案
- 2025年旅游管理人员岗位能力测评试题及答案解析
- 2025年竞争情报分析师职业能力水平考核试题及答案解析
- 2025年计算机程序开发工程师专业技术考核试卷及答案解析
- 2025年消防安全考核重点实战题及答案
- 课件中单词处理
- 2025年国际会展服务师资格考试试题及答案解析
- 2025年广告设计师专业技能考核试题及答案解析
- 应急第一响应人理论考试试卷(含答案)
- GB/T 28799.2-2020冷热水用耐热聚乙烯(PE-RT)管道系统第2部分:管材
- 办公室工作手册(国企、事业单位版本)
- 警械使用课件
- 英语词汇学教程-全套课件-
- 儿童气管插管医学课件
- 建筑工程从数字化建造到智慧
- 文化创意产品设计及案例PPT完整全套教学课件
- 五年级上册英语课件-Unit1 Goldilocks and the three bears第四课时|译林版(三起) (共18张PPT)
- 水利工程安全防洪度汛专项方案-版
- 先天性复拇畸形虎口形态特点及治疗策略-PPT幻灯片
评论
0/150
提交评论