《计算机网络实验报告》lr(0)课设报告

《计算机网络实验报告》lr(0)课设报告

ID:41756438

大小:246.71 KB

页数:25页

时间:2019-08-31

《计算机网络实验报告》lr(0)课设报告_第1页
《计算机网络实验报告》lr(0)课设报告_第2页
《计算机网络实验报告》lr(0)课设报告_第3页
《计算机网络实验报告》lr(0)课设报告_第4页
《计算机网络实验报告》lr(0)课设报告_第5页
资源描述:

《《计算机网络实验报告》lr(0)课设报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、简单的LR语法分析程序自动生成器的实现学号:11070429姓名:段志蔚指导教师:徐旭东2013年10月目录一、需求分析31.1需耍完成的功能:31.2需要处理的数据:31.3程序运行开发使用:3二、数据结构设让42.1定义的主要数据结构:42.2程序整体结构以及各模块的功能描述42.2.1拓广文法4222项冃52.2.3闭包52.2.4go_switch()函数52.2.5LR分析表的构造52.2.6ACTION子表52.2.7GOTO子表5三、详细设计63」主程序63.2构造规范LR(O)83.3主控程序1()3.4判断是

2、否为终极符号123.5检查读入的文法并将文法转换133.6求状态的闭包173.7状态检查183.8检验状态转换函数的结果183.9状态转换函数的结果加入DFA193.10清空状态转换函数的存储空间193.11创建ACTION表193.12仓ij建GOTO表203.13输出ACTION,GOTO表213.14检验当前状态下是否已存在用当前字符建立的连接223.15统计增广文法的长度23四、程序测试244」输入测试用例有误244.2输入测试用例正确25五、总结与提高26某语言语法规则的集合TDPAG总控程序1.1需要完成的功能:完

3、成编译器的基木功能,从文档屮读出给定文法G分析出输出的语法符号串各类语法成分,同时进行语法检查,为文法分析作准备。程序采用自底向上分析方法是,一种移进■规约过程,当分析栈顶符号串形成句柄时就采取归约动作,因而自底向上分析法的关键问题是在分析过程屮如何确定状态。LR分析法正是给岀一种能根据当前分析栈中的符号串(通常以状态表示)和向右顺序查看输人串的k个符号就可惟一地确定分析器的动作是移进还是归约和用哪个产生式归约。之后自动生成ACTION表与GOTO表并保存,完成总控程序。最后读入测试用例,分析测试用例并输出分析过程和分析结果。

4、LR(0)语法分析程序(・c文件)1.2需要处理的数据:1)从D:wenfa.txt中读取文法统计终结符与非终结符的个数并将输入文法转换2)通过文法求出所有非终结符的闭包及其状态3)通过所有状态构造ACTION表与GOTO表4)从D:thework.txt读入输入的字符串并通过ACTION表和GOTO表完成移进,归约以及归约后的状态转换。完成对输入字符串的分析并输出结果1・3程序运行开发使用:程序运行环境:Windows7VC++6.0使用语言:C++二.数据结构设计2・1定义的主要数据结构:typedefstructSq

5、E{intt;〃状态编号charcl;//状态}SqE;〃堆栈元素typedefstructitem{intf;〃项Q前部,表示产生式编号int1;//项目后部,表示停顿点在产生式的位置}item;//定义项目typedefstructlink{intf;//连接前部,表不所用符号的编号,非终结符编号=在vn[J中的下标+100int1;//连接后部,即状态编号}link;//定义状态Z间的连接typedefstructcd{intitem_num;//^态中的项目数intlink.num;//状态的连接数itemw[N];/

6、/项目集linku[N];〃连接集}cd;〃定义状态typedefstmctDFA{intcd_num;//状态个数cds[N+l];〃状态集}DFA;〃定义规范LR(0)项11族,D.s[N]丿IJ作状态转换函数go_switch()的存储空间2.2程序整体结构以及各模块的功能描述2.2.1拓广文法文法G是一•个以S为开始符的文法,拓广G为CF(包含整个G)增加一个非终结符S,,且加一个产生式S,-S,S,是CF的开始符,称CT是拓广文法2.2.2项目LR项目:文法G的每个产生式的右部添加一个圆点称为G的一个LR项目。223

7、闭包I是文法G,的任一项目集(1)I的任何项目都属于CLOSUER(I)(2)若A-a、BB属于CLOSUER(I),贝U关于BGVn的产生式B->Y项目B-、Y也属于CLOSUER(I)(3)若若A->a'BB属于CLOSUER(I),a属于CLOSUER(I),B->Y是一个产生式,那么对于FIRSE(0a)中的每个终结符b,如果B-'Y,b原來不在CLOSUER(I)屮则把它加进去(4)重复(2)(3)直到CLOSUE⑴不再扩大为止2.2.4go_switch()函数go_switch(I,X)是一个项口集,X是一个文法

8、符号,go_switch(I,X)二CLOSUER(J)J二{形如A-aX'B的项目A-Q、X0WI}或J={形如A-aX、B,a的项目A-a'XB,aGI)2.2.5LR分析表的构造假定CW{h」2,l3・..In},每个项目集Ik的的下表K作为分析器子表的状态,令包含项口

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。