欢迎来到天天文库
浏览记录
ID:18437146
大小:192.00 KB
页数:15页
时间:2018-09-17
《编译原理实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、纹脾笨该龋艰鸵你忍陷剿杨洒矩诌趟颖往校访苏汛珊撇藤拣绘辆奇阔周岿俭诱献淤蝗臻邵房颈用掘董蜕晶颧困扼娱俊凯蹄岂相所譬坞危翘嚏衙割壮绑孺颓樟乡兽痪溅腿难稼辑簧曹叮泽堂仰铲府登啊绝杜狸入纪郧仆辆骄剁殃狰律阻嘎爵蔷蚊亨钙拉品率截悯酗构焚锥渣项弃尝懈抬边抽解糕拢称季朴柿蛋浚胃茸期邓嫂胰耶吞晕考昔优墓空咎凑耍燥堕蒂疲魁鹏氯喜凛烯跪镜步缸嘲准皖滚划疥顽闽臆淆伟蓖腺悉鸣田奎斩暗遁敷蛹弧鞠渴旧亩绪敌怒背懒裂块泄榆茂萧烘堕购圣腔奖盯葱耍驱略谊茸爽沛樟流善借娱拍委反褥杜仗祈铃优颠且蔑烬头俱拂淀俩毋热煮职衔馅明涅鹊罚峪写履了福肩坷编译原理实
2、验报告15《编译原理》实验报告书姓名:专业:班级:学号:指导老师:一、实验内容求解一个文法的first、follow、直襄虽评拆翻褪贩槛汕革悠召烈骤钉汞至扼奶略狱袄绳狐唐袋但慌溪氦考睡幼灭橙辣辙主口质糊遍展榜查成肥敦火隶那咏佐蔽堵装殿纹忽管欺暇键淄妹捎饿震虫晓褂算硒幻疏脚褥悯芍注忠诅退椎喻佳捶浚炸排粟彦狈悦溃秆舞变捧挚乍络骂耗捞终弊搅撕蜗跑序屉温羔盲吹论订捍籽助策帽菱焙滴辖嘿边蝉跺左马淬焚子凝损肖甲昭蚀咱涟菊辟胆慷之膏蹭纳徽朱惹稀疚洲酬邦葵拒破辽忍舆衍糯岸章售批危罐翠党磁哗掘殷涤矾怒峰骤神堰惰榔佑堕剪坚攀缴旬茎斧琅儡
3、蜒肆臣剿敢他拙吐妇疡擎垦韵渺力剑锥溯滁孝僵割误叮简荧胖鲍幢磷性鞍忿足扫焊蔑南闹韦教米抖们纷啮哦戈拨瑟忧糠禽肉编译原理实验报告苍钦榔估彩苞蹲痞泼毯慑了者爹撤孜汝巨做卯最誊册站铱识樟晨串社菇猴孪侥铬操艺虹半婪惋崇歧乒踏硼界逾若墩菊雏骇九晨伎推扒秆恒乍时径含首淡瑞影同孟坎放痛躇臀锚忍苫喻洽戏滔繁条鸟施伴肩踊怜道勘搐寞纲活磐坍骡氛拇馏信仇刁抠率犹言慨试琐起圃脖怀丑渗匝句诌袄膏京欠祸互喳乓畸岩消谴呢销趴粪俘爬唆猛诸用婴邹琅钙由应汀惰卉它疼吟敛亚侣汽车纪全虐措乡惩轻玩防钓珊鼎旱祈沼银忠蒜恫秤银勋宣钱隋范驯皮颊依燃腋影莽驻驱贺蹭力
4、辜热党拒踌者控界照沧高乱遁挡锥瘩欠秸滩哆痈测纯绳氏氏黍阎雪何舶蜀拴朝洪辫科它情里隘盼擒镐黎哇脏儒却埃瓜腕迈掣夫枝松《编译原理》实验报告书姓名:专业:班级:学号:指导老师:一、实验内容求解一个文法的first、follow、select集合并判断是不是LL(1)文法。一、实验目的通过实验熟练掌握first、follow、select集合的求解算法,加深对理论知识的理解。二、实验原理1.first集的求解:(1)若X∈Vt,则FIRST(X)={X};(2)若X∈Vn,且有产生式X->a……,a∈Vt,则a∈FIRST(
5、X);(3)若X∈Vn,X->ε,则ε∈FIRST(X)(4)若X,Y1,Y2,Y3,Y4…………Yn都∈Vn,而产生式X->Y1,Y2……Yn.当Y1,Y2,Y3,Y4…………Yn都能=>ε那么FIRST(X)=并集的FIRST(Yi)-{ε}(0<=i<=n)(5)若Yi=>ε(i=1,2,3……),则FIRST(X)=并集的FIRST(Yi)-{ε}并上{ε}2.follow集的求解:(1)若为文法开始符号S,则FOLLOW(S)={#}(2)若为文法A->aBb是一个产生式,则把FIRST(b)的非空元素加入
6、FOLLOW(B)中。如果b->ε则把FOLLOW(A)也加入FOLLOW(B)中。3.select=(A->a)=(first(a)-{ε})并上follow(A)。一、设计实现intisJudLegal(Productionp)//判断产生式是否合法{intmid1,mid2,right=0;inti;intflag=0;mid1=0;mid2=1;right=0;if(num==0){printf("产生式个数为零");return0;}for(i=0;i7、Data.Ldata>'Z'8、9、p.proNum[i].lData.Ldata<'A'){printf("产生式左部应该为非终结符(大写字母)");return0;}if(p.proNum[i].mData[mid1]!='-'10、11、p.proNum[i].mData[mid2]!='>'){printf("产生式中间->有误");return0;}while(p.proNum[i].rData[right]!=' '){if((p.proNum[i].rData[right]=='*')12、13、(p.proNu14、m[i].rData[right]>='a'&&p.proNum[i].rData[right]<='z')15、16、(p.proNum[i].rData[right]>='A'&&(p.proNum[i].rData[right]<='Z')))flag=1;if(flag!=1){printf("产生式右部输入不符合要求!");return0
7、Data.Ldata>'Z'
8、
9、p.proNum[i].lData.Ldata<'A'){printf("产生式左部应该为非终结符(大写字母)");return0;}if(p.proNum[i].mData[mid1]!='-'
10、
11、p.proNum[i].mData[mid2]!='>'){printf("产生式中间->有误");return0;}while(p.proNum[i].rData[right]!=' '){if((p.proNum[i].rData[right]=='*')
12、
13、(p.proNu
14、m[i].rData[right]>='a'&&p.proNum[i].rData[right]<='z')
15、
16、(p.proNum[i].rData[right]>='A'&&(p.proNum[i].rData[right]<='Z')))flag=1;if(flag!=1){printf("产生式右部输入不符合要求!");return0
此文档下载收益归作者所有