编译原理实验报告.doc_第1页
编译原理实验报告.doc_第2页
编译原理实验报告.doc_第3页
编译原理实验报告.doc_第4页
编译原理实验报告.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译原理实验报告实验名称语法分析算法班 级 学 号 姓 名曹大霖指导教师 黄贤英 实验成绩 年月目录一、 实验目的矚慫润厲钐瘗睞枥庑赖賃軔朧。二、 实验内容聞創沟燴鐺險爱氇谴净祸測樅。三、 实验方案设计残骛楼諍锩瀨濟溆塹籟婭骒東。()预测分析酽锕极額閉镇桧猪訣锥顧荭钯。 集和集生成彈贸摄尔霁毙攬砖卤庑诒尔肤。 ()预测分析表的构造謀荞抟箧飆鐸怼类蒋薔點鉍杂。 ()预测分析过程模拟厦礴恳蹒骈時盡继價骚卺癩龔。算符优先分析茕桢广鳓鯡选块网羈泪镀齐鈞。 集和集生成算法模拟鹅娅尽損鹌惨歷茏鴛賴縈诘聾。 算符优先分析表生成模拟籟丛妈羥为贍偾蛏练淨槠挞曉。 算符优先分析过程模拟預頌圣鉉儐歲龈讶骅籴買闥龅。分析渗釤呛俨匀谔鱉调硯錦鋇絨钞。 构造()项目集规范簇铙誅卧泻噦圣骋贶頂廡缝勵罴。 构造()分析表擁締凤袜备訊顎轮烂蔷報赢无。 分析过程模拟贓熱俣阃歲匱阊邺镓騷鯛汉鼉。四、实验测试坛摶乡囂忏蒌鍥铃氈淚跻馱釣。测试实例蜡變黲癟報伥铉锚鈰赘籜葦繯。测试结果買鲷鴯譖昙膚遙闫撷凄届嬌擻。五、 程序的使用手册綾镝鯛駕櫬鹕踪韦辚糴飙钪麦。六、 心得体会驅踬髏彦浃绥譎饴憂锦諑琼针。实验目的掌握集和集生成的算法,()预测分析表的构造及分析。掌握和集的算法,算符优先分析表的构造算法及其分析过程。掌握分析方法中求项目集规范簇的算法,分析表的算法集分析过程。实验内容()预测分析集和集生成;()预测分析表的构造;()预测分析过程模拟。算符优先分析集和集生成算法模拟;算符优先分析表生成模拟;算符优先分析过程模拟。分析构造()项目集规范簇;构造()分析表;分析过程模拟。实验方案设计()预测分析输入一个上下文无关文法,生成文法中每个非终结符的集和集,并构造预测分析表。输入该文法的一个句子,分析句子并输出其过程。猫虿驢绘燈鮒诛髅貺庑献鵬缩。 集和集生成求某一非终结符的首终结符集()的算法为:() 若有产生式,把加到()中;() 若有产生式, 把加到()中;() 若有产生式,把()中非元素加到()中;() 若有产生式,其中。则:当 ()时,把()的所有非元素加到 ()中;锹籁饗迳琐筆襖鸥娅薔嗚訝摈。当 时,则把()加入()中。() 重复执行上述过程,直到()不再增大。 ()预测分析表的构造() 对文法的每个文法符号构造();() 对于每一产生式 :对于每个终结符(),将填入 ;如果(),则构造(),对任何元素 (),将填入。構氽頑黉碩饨荠龈话骛門戲鷯。() 将所有无定义的 标上错误标志。 ()预测分析过程模拟动态模拟算法的基本功能是:() 输入该文法的一个句子;() 分析句子并输出其过程。算符优先分析输入一个上下文无关文法,求出文法中每个非终结符的集和集,并构造算符优先表。输入一个符号串,对其进行分析,判定给定的符号串是否是该文法的句子。輒峄陽檉簖疖網儂號泶蛴镧釃。 集和集生成算法模拟求集的算法: (); ; ()进栈; ; 对每个非终结符和终结符 对每个形如或的产生式 () 非空栈顶项出栈,记为() 对每条形如的产生式 ();. 算符优先分析表生成模拟 每个形如的产生式 和都是终结符 , 和是终结符, 但为非终结符 为终结符, 为非终结符 中的每个元素 ; 算符优先分析过程模拟动态模拟算法的基本功能是:() 输入一个符号串;() 分析并判定该符号串是否是给定文法的句子,输出其过程。分析输入一个()文法,求出其项目集规范簇,并构分析表。输入一个符号串,对其进行分析,判定给定的符号串是否是该文法的句子。尧侧閆繭絳闕绚勵蜆贅瀝纰縭。 构造()项目集规范簇设有()文法,首先求出其所有的项目,然后根据项目求出其()项目集规范簇,求项目集规范簇的算法为:识饒鎂錕缢灩筧嚌俨淒侬减攙。 (); ( ) ; 中的每个项目集和每个文法符号 ()非空且不属于 把() 加入中 不再增大;; 构造()分析表()分析表的构造算法为:() 对于 ab, ():若 ,则置 ,即把()移进栈;若 ,则置。() 对于a ,则对所有的和 ,均置 (设 a是第个产生式),即用 a归约);凍鈹鋨劳臘锴痫婦胫籴铍賄鹗。() 若 ,则置,即接受;() 其他均置出错。 分析过程模拟在分析过程中设置一个堆栈和一个分析表,根据分析表和输入符号串对堆栈进行操作,分析器的下一步动作是由栈顶状态和当前面临的输入符号唯一确定的。恥諤銪灭萦欢煬鞏鹜錦聰櫻郐。根据栈顶状态和输入符号查表, 根据表中的内容不同完成不同的动作,若, 为:鯊腎鑰诎褳鉀沩懼統庫摇饬缗。() 移进:当前输入符号进符号栈,下一输入符号变成当前输入符号,将表中指出的状态进状态栈。三元式变为:硕癘鄴颃诌攆檸攜驤蔹鸶胶据。 (, , )() 归约:按某个产生式进行归约,若产生式的右端长度为,则两个栈顶的个元素同时出栈。将归约后的符号进符号栈; 根据新栈顶状态和归约符号查表,, 进状态栈。三元式变为:阌擻輳嬪諫迁择楨秘騖輛埙鵜。 ( , , )() 接受:分析成功,终止分析。三元式不再变化。() 出错:报告出错信息。三元式的变化过程终止。四、实验测试测试实例测试文法:包含*()运算的文法分析,可分析句子*$*$()算符优先测试文法:包含*()运算的优先关系分析,可分析句子*()测试文法:识别连续的文法,可分析的推导过程测试结果:如图 图 分析算符优先: 图 算符优先分析:如图 图 分析程序的使用手册如图分析界面,打开测试文法文件之前其余按键都未激活,打开文件过后显示将要分析的文法,可确认文法是否符合规范,可查看该文法所产生的集和集,以及预测分析表。输入一个文法句子,可通过之前的预测分析表来分析该句子是否是此文法的一个句子。若是,则弹出一个消息框说明。氬嚕躑竄贸恳彈瀘颔澩纷釓鄧。如图算符优先分析界面,打开测试文件前其余按键都未激活,打开测试文件后可进行确认文法的规范性,可以分析显示该文法产生的和集合,之后可列出各终结符的优先关系。输入一个句子,可通过之前的优先表来判断在遇到一个终结符时是否进行移进或归约,最终完成有优先关系的句子的分析。若分析顺利完成则弹出消息框提示。釷鹆資贏車贖孙滅獅赘慶獷緞。如图分析界面,打开测试文件前其余按键都未激活,打开测试文件之后,可确认文法的规范性,可显示该文法所形成的状态信息以及分析表,可输入一个句子通过分析表来进行句子的分析。若分析完成则弹出消息框提示。怂阐譜鯪迳導嘯畫長凉馴鸨撟。心得体会通过此次对于语法分析中多种算法的设计,让我对算法分析在编译过程中的重要性有了充分的认识。语法分析主要有自上而下和自下而上两种方法,其中自上而下的分析方法中有递归下降和()两种方式,在()预测分析实验中理解了求集、集的算法,掌握了构造预测分析表的方法,并能根据预测分析表对给定的符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论