lr 与 ll 分析

13
LR 与 LL 与与 与与与与与与与与 与与与 PB1011053

Upload: tanner-charles

Post on 03-Jan-2016

195 views

Category:

Documents


0 download

DESCRIPTION

LR 与 LL 分析. 编译原理习题课二 胡云斌 PB1011053. Conten t. 1. 文法分析的前提 2. 文法分析的准备 3. 开始分析 4. 以后实验的建议. 分析前提. 一个文法: 1. 不是二义的 (为什么? ) 有冲突或多选择,如果能给定优先级,二义也可。 2. 是否可左 递归 的,提左因子( 自上而下 还是自下而上 ) 从后往前和从前往后的区别 A-> aA , A->Aa - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: LR 与 LL 分析

LR 与 LL 分析编译原理习题课二

胡云斌PB1011053

Page 2: LR 与 LL 分析

Content

1. 文法分析的前提

2. 文法分析的准备

3. 开始分析

4. 以后实验的建议

Page 3: LR 与 LL 分析

分析前提

一个文法: 1. 不是二义的 (为什么?)

有冲突或多选择,如果能给定优先级,二义也可。 2. 是否可左递归的,提左因子(自上而下 还是自下而上

)从后往前和从前往后的区别

A-> aA , A->Aa 3.XX(1) 的 (是什么的 1 ,只是终结符还是都可)

Page 4: LR 与 LL 分析

消除二义性

这里只提到优先级问题:

R->R’|’R |RR|R*|(R)|a|b分层思想: R1,R2,R3,R4R1->(R4)|a|bR2->R1*|R1R3->R3R2R4->…

Page 5: LR 与 LL 分析

文法分析准备1. 什么是 Follow 和 First ?

2. 什么是 close 和 goto ?

3. 什么是移进,什么是归约?

4.LR 里有三种分析,其中的区别

5. 自上而下和自下而上的分析过程区别

Page 6: LR 与 LL 分析

Follow 集和 First 集

资源:所有的产生式

1.Follow :对于某个符号,可能紧跟在其后面出现的终结符A->xBy , x y 为终结符号串,则 follow ( B ) =

if y!= 空 then first ( y ) else follow ( A )2.First :对于某个非终结符,其向下推导后可能在第一位的终结符。A->B first ( A ) =first ( B )3. 过程:先简单,后复杂;先 first ,后 follow 。

口诀: first 左, Follow 右,简单入手,滚雪球。

Page 7: LR 与 LL 分析

close 和 goto

Close 对于某种运算,从根开始所有可能达到的情况 这里表示同质的所有表示

Goto 从一个闭包里的元素经过一次动作到达的状态,Goto ( state ,符号(必须是终结符吗?)) =state动作:表示向前一步,吃一个符号再用 close 求闭包

Page 8: LR 与 LL 分析

移进和归约分析栈: 2A3B4c5A3

移进:吃一个状态和终结符号2A3B4c5A3a4归约:吃一个串,它以符号开头和状态结尾 2A3B4

吐一个符号,状态 ( 此状态从蓝色为行,红色为列去读 )2A3B4X3

Page 9: LR 与 LL 分析

一句话

1. 什么是 Follow 和 First ?

2. 什么是 close 和 goto ?

3. 什么是移进,什么是归约?

书上 P53

P73

P69

Page 10: LR 与 LL 分析

LR 里三种分析的区别

文法 类型 目的 判别 分析方法 表格填充 表格实现算法

表格使用

LL(1) 自上而下

不带回溯

书上P54 两句话

1. 递归2. 非递归

左列非终结符;产生式为内容;上行为终结符

左 -> 右First (右)首选,如果有空,则follow(左)

产生式展开和符号匹配删除

LR ( 1 ) 自下而上

有环境的follow

找反例,看冲突

LR(0) 项目集,用follow

左列状态(项目集);移进和归约为内容;上行为所有符号

移进看 goto归约看产生式序号

移进,和归约后看最近状态

SLR ( 1 ) 自下而上

没有环境的follow

同上 LR ( 1 )项目集,看后缀符号

同上 同上 移进,和归约后看最近状态

Page 11: LR 与 LL 分析

自上而下和自下而上的区别

自上而下:不回溯,不可左递归,生长型自下而上:移进 - 规约分析,收敛型

Page 12: LR 与 LL 分析

开始分析

1. 如何修改文法(二义到非二义,左递归的消除)2. 项目集的建立,同时就完成状态的转化图

3. 表格的要点2.1 ri 的 i 和 sj 的 j 的区别

2.2 遇到非终结符和终结符的区别 2.3 LR ( 0 )项目集需要 Follow 和 First , LR ( 1 )不需要

Page 13: LR 与 LL 分析

以后实验的建议

脚本问题:标准目录,可执行文件名和所在目录(一般 bin )

分数在助教主页上给出;

形式:作业一题一分,扣分计 实验 10 分一次。