自上而下分析

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

2.规范规约:令G是一个文法,S是文法的开始符号,假定αβc是文法G的一个句型,其中α,β,c∈(VN∪VT)*,A∈VN ,如果有S=>αA且A=>β,则β称是句型αβa相对于非终结符A的短语。

3.算符优先分析法:思路:定义算符之间优先关系,借助这种关系来寻找“可归约串”和进行归约。

定义两个终结符‘a’与‘b’的优先关系

a =.b   表示a的优先性等于b
a >.b   表示a的优先性大于b

a <.b   表示a的优先性小于b 

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

5.优先函数的定义:
把每个终结符与两个自然数f()与g()相对应,使得
若a1 <a2,则f(a1) < g(a2)
若a1 =a2,则f(a1) = g(a2)
若a1 >.a2,则f(a1) > g(a2)

f称为入栈优先函数,g称为比较优先函数。

6.优先函数的构造方法:
如果优先函数存在,则可以通过以下三个步骤从优先表构造优先函数:
(1)对于每个终结符a,令其对应两个符号fa和ga,画一张以所有符号fa和ga为结点的方向图。如果a>.b,则从fa画一条弧至gb如果a<.b,则从gb画一条弧至fa 。
(2)对每个结点都赋予一个数,此数等于从该结点出发所能到达的结点(包括出发点自身)。赋给fa的数作为f(a)赋给ga的数作为g(a)。

(3)检查所构造出来的函数f和g是否与原来的关系矛盾。若没有矛盾,则f和g就是要求的优先函数,若有矛盾,则不存在优先函数。

7.LR分析过程:第一步  分析开始时,首先将初始状态SO及句子左界符#推入分析栈中。第二步  设在分析的某一步,分析栈及余留的输入符号串处于如下的格局。 


则以栈顶的状态及正扫视的输入符号ai组成符号对(Sm,ai)去查分析动作表,并根据表元ACTION[Sm,ai]的指示完成相应的分析动作。每一分析表元所规定的动作,仅能是下列四种动作之一:

(1)若ACTION[Sm,ai]=“移进”,这表明句柄尚未在栈顶部形成,此时正期待继续移进输入符号以形成句柄,故将当前的输入符号推入栈中:


然后,以符号对(Sm,ai)查状态转移表,设相应的表元GOTO [Sm,ai]= Sm+1,再将此新的状态(即要转移到的下一状态)推入栈中,则有如下的格局:


(2)若ACTION[Sm,ai]= rj ,其中rj意指按文法的第j个产生式A→Xm-r+1 Xm-r+2…Xm进行归约。

   将分析栈从顶向下的r个符号(因为该产生式右部符号串的长度为r)退出,然后再将文法符号A推入栈中,此时分析栈的格局为:


然后,以(Sm-r ,A)查状态转移表,设GOTO [Sm-r,A]=Sl,将此新状态推入栈中,则有如下的格局:


(3)若ACTION[Sm,ai]=“接受”,则表明当前的输入串已被成功地分析完毕,应中止分析器的工作。

(4)若ACTION[Sm,ai]=ERROR,则表明当前的输入串中有语法错误,也应终止分析器的工作。

第三步  重复上述第二步的工作,直到在分析的某一步,栈顶出现“接受状态”或“出错状态”为止。对于前者,分析栈的最终格局应为:


其中,Z为文法的开始符号,Sα则为使ACTION[Sα,#]=“接受”的唯一状态(即接受状态)。

8.构造识别文法活前缀DFA的两种方法:

1、求出文法的所有项目,按一定规则构造识别活前缀的NFA再确定化为DFA。

2、把拓广文法的第一个项目{S′→·S}作为初态集的核,通过求核的闭包和转换函数, 求出LR(0)项目集规范族,再由转换函数建立状态之间的连接关系得到识别活前缀的DFA。

课后练习:



总结:感觉越来越难,但还是会多加练习,争取掌握。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值