- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 根据语法结构来编写函数。语法结构用文法规则给定。 4.5 预测分析程序 递归下降分析法:采用递归过程。因此实现分析程序所使用的高级语言必须支持递归过程才行。 预测分析法是自顶向下分析的另一种方法。 使用下推自动机的方式实现。 使用一个二维分析表和栈联合进行控制来实现分析。 预测分析器模型 预测分析器的组成: 预测分析程序(与文法无关) 先进后出栈 预测分析表-与文法有关 分析表M: 是一个从VN?(VT?{#})到产生式的映射。在分析时遇到A和a时,应该选择M[A,a]中存放的产生式。如果M[A,a]为空,表示出现语法错误。 分析表格式: i + * ( ) # E ?TE ?TE E ?+TE ? ? ?? T ?FT ?FT T ? ? ?*FT ? ? ?? F ?i ?(E) 第1列为非终结符 第1行为终结符+’#’ 每个元素为产生式或空 E ?TEE ? +TE |εT ? FTT ? *FT |εF ?(E) |i 总控程序: 将’#’压入堆栈中,将开始符号S压入堆栈中 读取第一个输入符号到a; 循环执行下述操作: 栈顶符号弹出放入X中; 如果X为终结符号: 如果X == a != ‘#’,表明成功匹配a符号; 读取下一个符号到a,否则出错; 如果X == ‘#’ 如果X == a ,分析结束,接受句子。 如果 X!= a ,出错处理。 如果X为非终结符号, 则查分析表M: 如果M[X,a]为空,出错处理。 如果M[X,a]=‘X1 X2…Xn ’, 则: 将右部Xn …X2 X1反序压入堆栈中。 1 #E i+i*i# E?TE? 预测分析过程 下面用预测分析方法对输入串i+i*i # 进行分析,给出栈的变化过程如下: 2 #E?T i+i*i# T?FT ? 3 #E?T?F i+i*i# F?i 4 #E?T?i i+i*i# i匹配 5 #E?T? +i*i# T??ε 6 #E? +i*i# E??+TE? 7 #E?T+ +i*i# +匹配 E ?TEE ? +TE |εT ? FTT ? *FT |εF ?(E) |i i + * ( ) # E ?TE ?TE E ?+TE ? ? ?? T ?FT ?FT T ? ? ?*FT ? ? ?? F ?i ?(E) 步骤 分析栈 剩余输入串 所用产生式 8 #E?T i*i# T?FT 9 #E?T?F i*i# F ? i 10 #E?T?i i*i# i匹配 11 #E?T? *i# T? ? *FT? 12 #E?T?F* *i# *匹配 13 #E?T?F i# F ? i 14 #E?T?i i# i匹配 15 #E?T? # T? ? ε 16 #E? # E? ? ε 17 # # 接受 i + * ( ) # E ?TE ?TE E ?+TE ? ? ?? T ?FT ?FT T ? ? ?*FT ? ? ?? F ?i ?(E) i + * ( ) # E ?TE ?TE E ?+TE ? ? ?? T ?FT ?FT T ? ? ?*FT ? ? ?? F ?i ?(E) 构造预测分析表 预测分析过程的总控程序是固定的。对于某个文法,分析表是分析过程的核心。 表中M[A,a]= ?A→X1X2…Xn ?表示对应于X1X2…Xn字的首终结符可以是a。就是说X1X2…Xn=aw。可以通过这个方式来确定分析表中的值。(即:求首终结符) * 预测分析表的构造算法 对文法的每个文法符号X构造First(X) 对于每一产生式 A→α, 对于每个终结符a∈First(α),将A→α填入 M[A,a]; 如果ε∈First(A),则构造Follow(A),对任何元素 b∈Follow(A),将A→α填入M[A,b]; 将所有无定义的 M[A,a] 标上错误标志。 如果文法是LL(1)文法,其预测分析表中没有多重定义的元素,可以进行确定的分析。 例:求对应于下述文法的预测分析表: 1.首先求first集 E ?TEE ? +TE |εT ? FTT ? *FT |ε F ?(E) |i First(E) = { ( ,i } First(E) = {+,ε}First(T) = { ( ,i }First(T) = {*, ε} First(F) = { ( ,i } 2.由于ε?First(E), ε?First(T), 求E和T的Follow集 Follow(E) = {#,)} Follow(T) ={#,),+} 3.根据集合的值填表,得到 i + * ( ) # E ?TE ?TE E ?+TE ? ? ?? T ?FT ?FT T ? ? ?*FT
您可能关注的文档
最近下载
- 2024年第十六届全国大学生数学竞赛初赛试卷及参考答案(非数学B类).pdf VIP
- 自考本科《小学综合性学习与跨学科教学》2025年4月模拟题附答案.docx VIP
- 高校教师培训教学设计模板.docx VIP
- 《野外辨别方向》课件.ppt VIP
- 2024年第十六届全国大学生数学竞赛初赛试卷及参考答案(非数学A类).pdf VIP
- 医务人员职业防护.ppt VIP
- 第42届全国中学生物理竞赛复赛试题.docx VIP
- 万科示范区验收移交指引.docx VIP
- 唐代僧人的法律规范-政大机构典藏.PDF
- 2025-2026学年高二地理上学期第一次月考卷5【测试范围:选择性必修一,第1~2章第1节】(原卷及解析).docx VIP
文档评论(0)