编译原理第五章-语法分析-自下而上分析

重要知识:
1,归约
短语=每一颗子树
直接短语=每一颗简单子树
句柄=最左直接短语
2,规范归约=最右推导的逆过程=最左推导
3,算符优先分析:算符文法=右边不含相邻非终结符
算符优先文法=算符文法满足a=b,a>b,a<b 至多一个
a=b P -->...ab..., P--->....aQb....
a>b p--->....Rb... ,R--->....a/...aQ
a<b p--->...aR... ,R---->b..../Qb....
4.FIRSTVT (P)
若产生式P---》a....或P----》Qa.... 则a属于FIRSTVT(P) 直接
若a属于FIRSTVT(Q) ,且又产生式P--->Q.... 则FIRSTVT(Q) 属于FIRSTVT(P) 间接
5,LASTVT(P)
若产生式P---》.....a或P----》.........aQ则a属于LASTVT(P) 直接
若a属于LASTVT(Q) ,且又产生式P--->.....Q 则LASTVT(Q) 属于LASTVT(P) 间接
6.素短语:短语,至少一个终结符,除本身以为不含更小素短语
最左素短语:最左素短语
7,优先函数:
f入栈优先函数 ,g比较优先函数
若a<b 则f(a)<g(b)
若a>b 则f(a)>g(b)
若a=b 则f(a)=g(b)
对应一个优先关系表的优先函数不是唯一的
8,LR(0)无二义(无冲突)
ACTION(动作):s移进:移进状态 r归约:按产生式n归约
归约:A---》a.
接受:S'---->a. S'为开始符号
移进:A----》b . aB a为终结符
待约:A---》a.Bb B为非终结符
9,SLR (1) 无二义 针对移进归约冲突
FOLLOW化解
例如
E---》T 。
T---》T。*F
FOLLOW(E)={#,),+}
所以当为*时 ,进行移进
当为# ) + ,进行归约
10,LR(1) 无二义 FIRST(ba)
A---》a。Bb ,a c属于FIRST(ba) 则B----》。& ,c为一个项目集
从S'---->S ,#开始
移进展望符不变
拓展求FIRST(ba)的展望符
11,LR(0) 属于SLR(1)属于LR(1)属于无二义文法
求优先表的过程
先计算FIRSTVT LASTVT
优先表
行 +T : +《FIRST(T)
列 E+ :LASTVT(E)>+
优先函数
画图
a>=b a---->b
a<=b a<------b
数数
此数等于该点出发连续到达不重复(包括出发点)
检查
G文法拓广 LR(0)
加新开始符号S’
写项目,画图
分析表 纵坐标 I状态0开始
横坐标 ACTION (所有终结符,#) GOTO(非终结符)
填表归约 r ,移进s

分析句子识别过程

step 状态 符号 输入符

1 0 # (a+a)#

例题

两个 LR(1) 项目集如果除去 _搜索符_____ 后是相同的,则称这两个 LR(1) 项目同心。

同心集合合并并不会产生 移进-归约 冲突。有可能产生新的 归约-归约 冲突。

一个 项目____ 指明了在分析过程中的某时刻所能看到产生式多大一部分。

LR 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。错误

在任何时候,分析栈的活前缀 X1X2...Xm 的有效项目集就是栈顶状态 Sm 所在的那个项目集。 正确

LR 分析技术无法适用二义文法 错误

项目 A →β 1 ·β 2 对活前缀αβ 1 是有效的,其条件是存在规范推导 S'*=> aAω=> a β 1 β 2 ω。 正确

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值