赞
踩
1.项目的概念
项目描述了句柄逐渐形成的状态
S->·bBB,表示期待终结符b
S->b·BB,表示期待规约出B
当到S->bBB·的时候就可以进行归约了,也就是可以将bBB换成S了
有k个字符就有k+1个项目
2.引入增广文法
引入增广文法的目的:让开始符号只出现在左部一次,而非多次
S`出现的第一个项目,初始项目,出现的最后一个项目是接受项目,· 在最左边,归约项目。
后继项目的定义
等价项目
只要有非终结符可以找到等价的项目,因为非终结符还可以推出其他的字符,这样显然就不可能等价了。
如下图:同一种颜色的就是等价的
项目闭包
构造状态图
1.如何找闭包,就是把非终结符一直换,一直到项目·后面出现终结符,不能再换了为止,就得到了一个完整的闭包。先从第一个其实项目开始,作为状态1。
2.每个项目推出对应的后继项目,一直到只有归约状态,没到归约状态就一直往下推。
由状态转化图得到预测表
接受项目表示的是acc
填表的方法:
遇到终结符和结束符填action表,遇到非终结符填goto表
归约状态填写r,待约状态填s
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。