编译原理434-LL文法的判别.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:22 大小:208KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

编译原理434-LL文法的判别.ppt

编译原理434-LL文法的判别.ppt

预览

免费试读已结束,剩余 12 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第四章4.3LL(1)分析法4.3.4LL(1)文法的判别(4.5.2)例4.7文法4.2P79G:E→E+T|TT→T*F|FF→(E)|i建立一个一维数组X[],用以记录非终结符能否推出ε。①将数组X[]中对应每一非终结符的标记置初值为“未定”。②扫描文法中的产生式。(a)若某一非终结符的某一产生式右部为ε,则将数组中对应该非终结符的标志置为“是”,并从文法中删除该非终结符的所有产生式。(b)若某一产生式右部含有终结符,则删除该产生式。(右部含有终结符,一定无法推出ε)若这使得以某一非终结符为左部的所有产生式都被删除,则将数组中对应该非终结符的标记值改为"否"。③扫描产生式右部的每一符号。(此时产生式右部全部为非终结符)(a)若所扫描到的非终结符号在数组中对应的标志是"是",则删去该非终结符,若这使产生式右部为空,则对产生式左部的非终结符在数组中对应的标志改"是",并删除该非终结符为左部的所有产生式。(b)若所扫描到的非终结符号在数组中对应的标志是"否",则删去该产生式,若这使产生式左部非终结符的有关产生式都被删去,则把在数组中该非终结符对应的标志改成“否”。④重复③,直到扫描完一遍文法的产生式,数组中非终结符对应的特征再没有改变为止。2.计算FIRST集(d)若X∈VN,且有产生式X→Y1Y2…Yi-1Yi…Yn,当Y1Y2…Yi-1都能推出ε时,则FIRST(Y1)-{ε}FIRST(Y2)-{ε}…FIRST(Yi-1)-{ε}FIRST(Yi)都包含在FIRST(X)中。(e)当(d)中X→Y1Y2…Yn所有Yj都可以推出ε,(j=1,2,…n),则FIRST(Y1)FIRST(Y2)…FIRST(Yn)都包含在FIRST(X)中反复使用上述(b)~(e)步直到每个符号的FIRST集合不再增大为止。求一个符号串α的FIRST集合例4.7文法4.2求FIRST集P793.计算FOLLOW集例4.7文法4.2求FOLLOW集P79例4.7文法4.2LL(1)文法判别P794.计算SELECT集补充例:判断文法是否是LL1文法3.求出能推出ε的非终结符4.求FIRST集5.求FOLLOW集6.计算SELECT集