1 / 18
文档名称:

lr分析实验报告.docx

格式:docx   大小:162KB   页数:18页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

lr分析实验报告.docx

上传人:459972402 2020/8/31 文件大小:162 KB

下载得到文件列表

lr分析实验报告.docx

文档介绍

文档介绍:学号:E10914106 专业:计算机科学与技术二班 姓名:杨雨露实验日期:2012/5/25 教师签字: 成绩:《编译原理》课程实验报告Word上实验四:LR分析目 录引言 1第一章 概述 设计题目及内容 设计环境 2第二章 设计的基本原理 分析器的基本理 分析器工作过程算法 3第三章 程序设计 总体方案设计 各模块设计 5第四章 程序测试和结论以及心得 ..7参考文献 7附录 程序清单 8第一章 :根据LR分析表构造LR分析器内容:已知文法G:(1)E→E+TE→TT→T*FT→FF→(E)F→ILR分析表:状态ACTION(动作)GOTO(转换)I+*()#2R2S7R2R23R4R4R4R44S5S48235R6R6R6R66S5S4937S5S4108S6S119R1S7R1R110R3R3R3R311R5R5R5R5注:sj表示把下一状态 j和现行输入符号 a移进栈rj 表示接受空格表示出错标志,报错根据以上文法和 LR分析表,构造LR分析器,并要求输出 LR工作过程。:一台 PC机软件设备:Windows2000/XPOS,VC++:C语言第二章 :在规范规约的过程中,一方面记住已移进和规约出的整个符号串,即记住“历史”,另一方面根据所用的产生式推测未来可能碰到的输入符号,即对未来进行“展望”。当一串貌似句柄的符号串呈现于分析栈的顶端时,我们希望能够根据记载的“历史”和“展望”以及“现实”的输入符号等三个方面的材料,来确定栈顶的符号串是否构成相对某一产生式的句柄。(栈)的确定有限状态自动机。。: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+1,Xm)已呈现于栈顶而且是一个相对于A的句柄。(3)接受 宣布分析成功,停止分析器的工作。(4)报错 发现源程序含有错误,调用出错处理程序。,已规约串和输入串所构成的三元式的变化过程。分析开始时的初始三元式为(s0, #, a1a2 ,, an#)其中,s0为分析器的初态;#为句子的左括号; a1a2,, an为输入串;其后的#为结束符(句子右括号)。分析过程每步的结果可表示为(s0s1,, sm,#X1X2,, Xmai,ai+1 ,, an#)分析器的下一步动作是由栈顶状态 sm和现行输入符号ai所唯一决定的。即,执ACTION(sm,ai)所规定的动作。经执行每种可能的动作之后,三元式的变化情形是:(1)若ACTION(sm,ai)为移进,且s=GOTO(sm,ai),则三元式变成:(s0s1,, sms,#X1X2,, Xmai,ai+1 ,, an#)(2)若ACTION(sm,ai)={A→β},则按照产生式A→β进行规约。此时三元式变为(s0s1,, sms,#X1X2,, XmA,aiai+1 ,, an#)此处s=GOTO(Sm-r,A),r为β的长度,β=Xm-r+1,, Xm。(3)若ACTION(sm,ai)为“接受”,则三元式不再变化,变化过程终止,宣布分析成功。4)若ACTION(sm,ai)为“报错”,则三元式的变化过程终止,报告错误。一个LR分析器的工作过程就是一步一步的变换三元式,直至执行“接受”或“报错”为止。第三章 (1)分析表建模:构造一个int型二维数组table[13][9],用于存放LR分析表。并初始化。作者这样规定:0~11表示状态sj,其中0对应s0,1对