编译原理课程报告

编译原理课程报告

ID:18942568

大小:273.00 KB

页数:32页

时间:2018-09-27

编译原理课程报告_第1页
编译原理课程报告_第2页
编译原理课程报告_第3页
编译原理课程报告_第4页
编译原理课程报告_第5页
资源描述:

《编译原理课程报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《编译原理》课程设计报告题目:LALR(1)分析器姓名:粟霞学号:0806230205指导教师:赵洋2011年6月一.设计目的1.巩固对语法分析的基本功能和原理的认识。2.通过对语法分析表的自动生成加深语法分析表的认识。3.理解并处理语法分析中的异常和错误。4.熟练掌握LALR(1)语法分析过程。二.设计内容本次课程设计是设计一个LALR(1)语法分析器。LALR(1)是LR(1)的一种改进。为了克服LR(1)中分析表的构造对某些同心集的分裂可能对状态数目引起剧烈的增长,从而导致存储容量的急剧增加,采用对LR(1)项目集规范族合并同心集的方法,若合

2、并同心集后不产生新的冲突,则为LALR(1)项目集。本次课程设计的主要内容有首先生成LR(1)项目族;再合并同心集;然后生成LALR(1)项目族,求出LALR(1)的分析表;最后能判断一个字符串是否是该文法的串,若是则生成该字符串的树。具体实现过程及相关主要实现类如下:类:LR0功能:LR0核心项目集构造输入:产生式的数字化表示输出:LR0核心项目集实现思想:LR0核心项目集构造算法程序如下:publicclassLR0{ArrayList>core;ArrayList>Ary_c

3、;ArrayListproducer;privateint[]copy(int[]a){intval[]=newint[a.length];for(inti=0;icopy(ArrayLista){ArrayListval=newArrayList();for(inti=0;i

4、}publicbooleanisEqual(int[]a,intb[]){if(a.length!=b.length)returnfalse;for(inti=0;ia,ArrayListb){if(a.size()!=b.size())returnfalse;for(inti=0;i

5、et(i)))returnfalse;returntrue;}publicintindexof(ArrayLista,int[]b){intindex;ints1[];for(index=0;index>a,ArrayListb){intindex;ArrayList

6、]>s1;for(index=0;indextemp=newArrayList(3);while(count

7、ucer.get(count)[0]>i)break;count++;}intval[]=newint[temp.size()];for(count=0;countpos){if(item.length==2)return;inti;intp[];for(i=0;i

8、(item.length-1==i)return;if(item[i+1]<1000){p=getStartWith(it

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

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

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