资源描述:
《消除改写文法的左递归ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、文法等价变换文法的等价对文法G1和G2,若有:L(G1)=L(G2),则称文法G1和G2等价,记作:G1=G2.文法等价变换有些语法分析方法要求被分析的文法满足一定的约束条件,当被分析的文法不满足这些条件是,常常要进行文法变换。1增补产生式消除空产生式消除不可达产生式消除特型产生式消除公共前缀消除左递归重要的文法等价变换21.增补产生式何时需要增补:在自底向上语法分析中需要。定理:对任一文法G1都可以构造文法G2,使得L(G1)=L(G2),且G2的开始符唯一且不出现于任何产生式的右部。证明:假设S是G1的开始符,则只要在G1中扩充一条新产
2、生式ZS即可,其中Z是新的开始符。另这样扩充后的文法为G2,则它显然满足定理的要求。33例:G1[S]:S→abSA
3、aA→bG2[Z]:Z→SS→abSA
4、aA→b42.消除空产生式定理:对任一文法G1,可构造文法G2,使得L(G1)=L(G2),且G2中无空产生式。证明:根据G1,构造G2的方法如下:令={A
5、A},={A
6、A+,+};从G1中删除所有形如A的产生式。从G1删除只能导出空串的非终极符。对于文法中任意产生式AX1X2…Xi-1XiXi+1…Xn,若Xi,补充规则AX1X2…Xi-1Xi+
7、1…Xn;重复以上过程,直到不出现新的产生式。5例:设有如下文法AaBcDBb
8、DBB
9、d消除该文法中的空产生式.解:(1)={B}={B,D}(2)AaBcDBbDBB
10、dAacD(3)AaBcDAaBcAacDBDBB得到新的文法如下:AaBcD
11、acD
12、aBc
13、acBbDBB
14、B
15、d63.消除不可达产生式定理:对任一文法G1都可以构造文法G2,使得L(G1)=L(G2),且G2中的每个非终极符必出现在它的某个句型中。证明:根据G1,构造文法G2的方法如下:令={S
16、S是文法的开始符}。递归扩充
17、={B
18、AxByG1,BVN,A}。若A,则删除以A为左部的所有产生式。74:消除特型产生式特型产生式若文法中的产生式具有形式AB(B为非终极符),则称该产生式为特型产生式.特型产生式的缺点是在语法分析中会降低分析的速度,因此应该消除这样的产生式.8证明:构造无特型产生式的文法G2的方法如下:(1)对文法G1中每个非终极符A,求集合:A={B
19、A=>+B,BVN}.(2)若BA,且B是文法G中的一个非特型产生式,则补充如下规则:A(3)去掉文法G1中的所有的特型产生式.(4)去掉新的文法中的无用产生式.定
20、理对任一文法G1,可以构造文法G2,使得L(G1)=L(G2),并且在G2中没有特型产生式.9例设有如下文法AB
21、D
22、aBBC
23、bCcDB
24、d消除该文法中的特型产生式.解:A={B,D,C}B={C}C={}D={B,C}根据算法第2步在文法中补充如下规则Ab
25、d
26、cBcDb
27、c去掉文法中的特型产生式,得到如下文法AaB
28、b
29、d
30、cBb
31、cCcDb
32、c
33、d其中关于C和D的产生式是无用产生式,应去掉.105:消除公共前缀公共前缀:A→,A→这种情形不满足自顶向下的语法分析条件.消除方法:可用提取左因子的方
34、法.假定关于A的规则是:A1
35、2
36、…
37、n
38、1
39、2
40、…
41、γm则将这些规则写成:AA’
42、1
43、γ2
44、…
45、γmA’1
46、2
47、…
48、n116.消除左递归一个文法含有下列形式的产生式时(1)AAa
49、b,称为直接左递归其中AVN;a,(VNVT)*(2)AB
50、BA
51、其中A,BVN;a,,,(VNVT)*称为间接左递归文法中只要有A+A…,则称文法为左递归的。12(1)对直接左递归形如:AA
52、消除左递归得:AAAA
53、(2)间接左递归形如:AB
54、BA
55、转为直接左
56、递归形式:AA
57、
58、或者BB
59、
60、按照直接左递归方式消除。去掉多余的产生式。对于不含回路或空产生式,消除左递归方法为:13ET
61、E+TTF
62、T*FFid
63、(E)例:TFT’T’*FT’
64、ETE’E’+TE’
65、Fid
66、(E)14增加拓广产生式消除空产生式消除不可达产生式消除特型产生式消除公共前缀消除左递归重要的文法等价变换15练习:1.设有如下文法,画出句型(adSdS)的语法树并写出其短语、简单短语和句柄。Sa
67、b
68、(A)ASdA
69、S2、试将描述命题演算公式的二义性文法G(S)改写为等价的无二
70、义性文法。优先级:()>非not>合取and>析取orSSandS
71、SorS
72、notS
73、p
74、q
75、(S)参照表达式文法转换3、消除改写文法的左递归。EE+EEE*EE(E)