消除改写文法的左递归ppt课件.ppt

上传人:牧羊曲112 文档编号:1348717 上传时间:2022-11-12 格式:PPT 页数:18 大小:210.50KB
返回 下载 相关 举报
消除改写文法的左递归ppt课件.ppt_第1页
第1页 / 共18页
消除改写文法的左递归ppt课件.ppt_第2页
第2页 / 共18页
消除改写文法的左递归ppt课件.ppt_第3页
第3页 / 共18页
消除改写文法的左递归ppt课件.ppt_第4页
第4页 / 共18页
消除改写文法的左递归ppt课件.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《消除改写文法的左递归ppt课件.ppt》由会员分享,可在线阅读,更多相关《消除改写文法的左递归ppt课件.ppt(18页珍藏版)》请在三一办公上搜索。

1、1,文法等价变换,文法的等价 对文法G1和G2,若有:L(G1)=L(G2),则称文法G1和G2等价, 记作:G1=G2.文法等价变换 有些语法分析方法要求被分析的文法满足一定的约束条件,当被分析的文法不满足这些条件是,常常要进行文法变换。,2,增补产生式消除空产生式消除不可达产生式消除特型产生式消除公共前缀消除左递归,重要的文法等价变换,3,1.增补产生式何时需要增补:在自底向上语法分析中需要。定理:对任一文法G1都可以构造文法G2,使得L(G1)=L(G2),且G2的开始符唯一且不出现于任何产生式的右部。证明:假设S是G1的开始符,则只要在G1中扩充一条新产生式ZS即可,其中Z是新的开始符

2、。另这样扩充后的文法为G2,则它显然满足定理的要求。,3,4,例: G1S: S abSA | a A b,G2Z: Z S S abSA |a A b,5,2.消除空产生式定理:对任一文法G1,可构造文法G2,使得L(G1)=L(G2),且G2中无空产生式。证明:根据G1,构造G2的方法如下:令=A | A,=A | A + , +;从G1中删除所有形如A的产生式。从G1删除只能导出空串的非终极符。对于文法中任意产生式AX1X2Xi-1XiXi+1Xn,若Xi,补充规则A X1X2Xi-1Xi+1Xn;重复以上过程,直到不出现新的产生式。,6,例 :设有如下文法A aBcDB b | D B

3、B | d消除该文法中的空产生式.解: (1) =B =B, D (2) A aBcD B b D BB | d,A acD,(3) A aBcD,A aBc,A ac,D B,D BB,得到新的文法如下:A aBcD | acD | aBc | acB bDBB | B | d,7,3.消除不可达产生式定理:对任一文法G1都可以构造文法G2,使得L(G1)=L(G2),且G2中的每个非终极符必出现在它的某个句型中。证明:根据G1,构造文法G2的方法如下:令=S | S是文法的开始符。递归扩充 =B | AxByG1, BVN, A。若A,则删除以A为左部的所有产生式。,8,4:消除特型产生式

4、,特型产生式 若文法中的产生式具有形式AB(B为非终极符),则称该产生式为特型产生式.特型产生式的缺点是在语法分析中会降低分析的速度,因此应该消除这样的产生式.,9,证明:构造无特型产生式的文法G2的方法如下:(1) 对文法G1中每个非终极符A,求集合: A=B | A=+B, BVN.(2) 若BA,且B是文法G中的一个非特型产生式,则补充如下规则: A(3) 去掉文法G1中的所有的特型产生式.(4) 去掉新的文法中的无用产生式.,定理 对任一文法G1,可以构造文法G2,使得L(G1)=L(G2),并且在G2中没有特型产生式.,10,例 设有如下文法AB | D | aBBC | bCcDB

5、 | d消除该文法中的特型产生式.解:A=B, D, C B=C C= D=B, C 根据算法第2步在文法中补充如下规则 Ab | d | cBcDb | c去掉文法中的特型产生式,得到如下文法A aB | b | d | cB b | c Cc D b | c | d其中关于C和D的产生式是无用产生式,应去掉.,11,5:消除公共前缀,公共前缀: A,A 这种情形不满足自顶向下的语法分析条件.消除方法:可用提取左因子的方法.假定关于的规则是:A1 | 2 | n | 1| 2 | m 则将这些规则写成: AA | 1 |2|m A1 | 2 |n,12,6.消除左递归一个文法含有下列形式的产

6、生式时(1) AAa |b ,称为直接左递归其中AVN;a, (VNVT)*(2) AB|BA| 其中A,B VN; a, (VNVT)*称为间接左递归 文法中只要有A+A,则称文法为左递归的。,13,(1)对直接左递归形如:AA|消除左递归得:AAAA|(2)间接左递归形如:AB|BA|转为直接左递归形式:AA| 或者 BB|按照直接左递归方式消除。去掉多余的产生式。,对于不含回路或空产生式,消除左递归方法为:,14,E T | E + TT F | T * FF i d| ( E ),例:,15,增加拓广产生式消除空产生式消除不可达产生式消除特型产生式消除公共前缀 消除左递归,重要的文法等

7、价变换,16,练习:,1.设有如下文法,画出句型(adSdS)的语法树并写出其短语、简单短语和句柄。S a | b | ( A )A S d A | S2、试将描述命题演算公式的二义性文法G(S)改写为等价的无二义性文法。优先级: ( ) 非not 合取and 析取or S S and S | S or S | not S | p |q | (S)参照表达式文法转换3、消除改写文法的左递归。,E E + E E E * E E (E) | i,E E+T | T T T*F | F F (E) | i,17,1.设有如下文法,画出句型(adSdS)的语法树并写出其短语、简单短语和句柄。S a

8、| b | ( A )A S d A | S,(,A,),S,d,A,S,S,d,A,短语: (adSdS), adSdS, a, SdS, S简单短语:a, S句柄:a,18,2、试将描述命题演算公式的二义性文法G(S)改写为等价的无二义性文法。优先级: ( ) 非not 合取and 析取or S S and S | S or S | not S | p |q | (S)参照表达式文法转换,E E + E E E * E E (E) | i,E E+T | T T T*F | F F (E) | i,S S or A | A A A and B | B B not B | C C p |q | (S),S AS S or A S | A B A A and B A | B not B | C C p |q | (S),E T E E + T E | T F T T * F T | F (E) | i,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号