- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
规范归约回顾;刻画“可归约串”---短语、直接短语、句柄;第六章 LR分析方法;目 录;6.1 LR分析方法的基本思路;1. 定义:;Abbcde的可归前缀与活前缀;例:对于G[S’] S’?S S?aAcBe A?b A?Ab B?d输入串:abbcde;Sn;每个可归约前缀与一个产生式相关联,该可归前缀的每个活前缀也就与这个产生式相关联。活前缀反映了已经得到了产生式的多大一部分,还期望得到什么,可归前缀表明已经得到产生式的全部,应该归约了。有三种情况:;Sn;活前缀与产生式的关系描述----项目;根据项目的定义,每个项目为识别活前缀的NFA的一个状态。;2.举例:;三、LR分析器的逻辑结构:;2. 分析表的组成:;I0 :S ′? ? S
S ? ? aSb
S? ?ab;四、LR分析(算法);LR分析;6.2 LR(0)分析表的构造;由于不同的项目反映了分析过程中栈顶的不同情况,因此可根据它的不同作用,将一个文法的全部LR(0)项目进行归类;举例:;根据转换函数,可画出NFA的状态图如下:;二、获得识别活前缀的DFA:;2. 对上述过程进行归纳总结,可以发现,一个DFA状态对应一个项目集,它们的全体称这个文法的项目集规范族.;3. DFA的形成过程举例:;活前缀的有效项目和有效项目集;有效项目的含义:;三、LR(0)文法:;四、LR(0)分析表的构造:;例:对文法G[S’]S’?EE?aA|bBA?cA|dB?cB|d;6.3 SLR(1)分析表的构造;将文法进行拓广,有如下项目:;4.原因:决定分析动作仅仅根据到目前已经看到的东西,没有查看下一符号(Token)。;二、SLR(1)分析表:;三、SLR(1)分析表的构造规则;移进——归约冲突;构造SLR(1)分析表;(5)对输入串i+i*i的SLR(1)分析过程:;用S?S.作为初态集的项目,构造识别文法活前缀的DFA如下:;1. SLR(1)方式失效的原因:假设有规范句型αAa…和βAb…,则a和b?follow(A)。但是一旦求出follow(A),其中的a就不再反映它的搭档α,而将α和β混为一谈--处理方式是不精确的。;显然,搜索符a只对归约项目A?αβ.有意义。问题是A?αβ. 来自于A?α. β,这样也就有必要为非归约项目加上搜索符。从而得到一般形式的LR(1)项目:[A?α. ?,a];(1) 闭包函数:;3 举例:;状态;6.5 LALR(1)分析;[S′??S,#]
[S??BB,#]
[B????aB,a/b]
[B??b,a/b];[S′??S,#]
[S??BB,#]
[B??aB,a/b]
[B??b,a/b];构造LALR(1)分析表;讨论:;6.6 二义性文法在LR分析中的应用;语法规则(.y文件);Yacc源程序有三部分组成: 声明 %% 翻译规则 %% C写的支持例程
声明部分??
有任选的两节。第一节处于分界符%{和%}之间,它是一 些普通的C的声明; 第二节是文法记号的声明。
翻译规则部分
每条翻译规则由一个文法产生式和有关的语义动作组成。??
支持例程部分??
?一些C写的支持例程。例:词法分析器,错误恢复例程等。;台式计算器:输入一个表达式并回车,显示计算结果(也可以输入一个空白行)。;expr : expr ‘+’ expr {$$ = $1 + $3; }
| expr ‘?’ expr {$$ = $1 ? $3; }
| expr ‘*’ expr {$$ = $1 * $3; }
| expr ‘/ ’ expr {$$ = $1 / $3; }
| ‘(’ expr ‘)’ {$$ = $2; }
| ‘?’ expr %prec UMINUS {$$ = ?$2; }
| NUMBER
;
%%
yylex ( )
{int c;
while ( ( c = getchar ( ) ) = = ‘ ’ );
if ( ( c = = ‘.’ ) | | (isdigit (c) ) )
{ ungetc (c, stdin); scanf ( “% lf ”, yylval); return NUMBER;}
return c;
};例:;总结:;;作业:;例G[S]: (0)S`→S (1)S→L=R (2)S→R (3)L→ *R (4)L→i (5)R→L;I1:S’?S ?,#
您可能关注的文档
最近下载
- 工程水文及水利计算 小流域设计洪水计算、由暴雨资料推求设计洪水、由流量资料推求设计洪水、准备知识 设计洪水分析计算.doc VIP
- 2019款林肯航海家_汽车使用手册用户操作图解驾驶指南车主车辆说明书电子版.pdf
- 财务管理培训之财务基础知识培训课件.pptx VIP
- 慢性阻塞性肺疾病PPT课件共29张PPT).pptx VIP
- 河北高职单招考试二类单招联考文化试题.docx VIP
- 宅经.pdf VIP
- 金川公司社招技能操作人员考试题.pdf
- 暴雨洪水计算表格.xls VIP
- 年产8万吨乙酸乙酯生产车间的设计论文.docx VIP
- 2026届高考语文复习默写专题训练---看图填诗句类默写.docx
文档评论(0)