编译原理复习(5)语法分析--自下而上分析

自下而上分析基本问题

中心问题:

怎样判断栈顶的符号串的可归约性以及如何归约。

“可归约串”的不同定义,形成了不同的自下而上的分析方法。

各种自下而上分析法的共同特点:

边输入单词符号(移进符号栈),边归约。

归约

.“移进—归约”的思想:

用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分替换成(归约为)该产生式的左部符号。
规范归约

中心问题:

如何寻找或确定一个句型的句柄。

实质:

在移进过程中,当发现栈顶呈现句柄时,
就用相应产生式的左部符号进行替换。

规范推导,就是最右推导。
规范句型:规范推导得到的句型。

规范归约:

若文法G是无二义的,则规范推导(最右推导)的逆过程必然是规范归约(最左归约)。

短语、直接短语、句柄:
在这里插入图片描述
规范归约过程:
在这里插入图片描述

算符优先分析

素短语:

是指这样的一个短语,它至少含有一个终结符,  
并且, 除它自身之外不再含任何更小的素短语。

最左素短语:

指处于句型最左边的那个素短语。

”最左素短语“ 就是 ”可归约串“。

不是一种规范归约法,是一种自下而上的语法分析法,
关键在于规定算符(即终结符)之间的优先顺序和结合性质,
借助这种优先关系寻找“可归约串”进行归约。

分析速度快,有利于表达式分析,宜于手工实现。

算符文法:

一个文法,如果它的任一产生式的右部都不含两个相继(并列)的非终结符,
即不含如式的产生式右部:…QR…
 则我们称该文法为算符文法。

算符优先文法前提是一个算符文法(没有相邻的非终结符)
算符优先文法:

实际上,在真正的算符优先分析方法中,
需定义任意两个相继出现的终结符号a和b之间的优先关系
(a与b之间可有一个非终结符),一旦确定了这种优先关系,
就可以用它来确定“可归约串”进行归约。

优先关系:

如果一个算符文法G中的任何终结符对(a,b)至多只满足三者中的一个,则称G是一个算符优先文法。
在这里插入图片描述
FIRSTVT集合,就是找推导出来的第一位或第二位的终结符(算符优先文法不可能有两个连续的非终结符)
LASVT集合,就是找推导出来的最后一个或倒数第二个终结符。
在这里插入图片描述
构造优先关系表的算法:
在这里插入图片描述构造FIRSTVT集合的算法:
只有扫描一遍全部的产生式,FIRSTVT集合不发生改变了,算法才可以停止。(因为只要有一个非终结符的FIRSTVT改

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值