形式语言与自动机理论电子教案.ppt
《形式语言与自动机理论电子教案.ppt》由会员分享,可在线阅读,更多相关《形式语言与自动机理论电子教案.ppt(102页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章上下文无关语言上下文无关语言G Gbrabra:S SS(S)|S(S)|L(Gbra)不是不是RL,是是CFL高级程序设计语言的绝大多数语法结构都高级程序设计语言的绝大多数语法结构都可以用上下文无关文法可以用上下文无关文法(CFG)(CFG)描述。描述。BNF(BNF(巴科斯范式:巴科斯范式:Backus normal formBackus normal form,又叫又叫Backus-naur form)Backus-naur form)。2/17/20231第第6 6章章 上下文无关语言上下文无关语言 主要内容主要内容关于关于CFL的分析的分析派生和归约、派生树派生和归约、派生
2、树CFG的化简的化简无用符、单一产生式、空产生式无用符、单一产生式、空产生式CFG的范式的范式CNFGNFCFG的自嵌套特性的自嵌套特性2/17/20232第第6 6章章 上下文无关语言上下文无关语言 重点重点CFG的化简。的化简。CFG到到GNF的转换。的转换。难点难点CFG到到GNF的转换,特别是其中的用右递归替的转换,特别是其中的用右递归替换左递归的问题。换左递归的问题。2/17/202336.1 6.1 上下文无关语言上下文无关语言 文法文法G=(V,T,P,S)被称为是上下文无关被称为是上下文无关的。的。如果除了形如如果除了形如A的产生式之外,对的产生式之外,对于于 P,均有,均有|
3、,并且,并且V成立。成立。关键:对于关键:对于 AV,如果,如果AP,则无,则无论论A出现在句型的任何位置,我们都可以将出现在句型的任何位置,我们都可以将A替换成替换成,而不考虑,而不考虑A的上下文。的上下文。2/17/202346.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树 算术表达式的文法算术表达式的文法 Gexp1:EE+T|E-T|TTT*F|T/F|FFFP|PP(E)|N(L)|idNsin|cos|exp|abs|log|intLL,E|E 2/17/202356.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树 算术表达式算术表达式x+x/
4、y22的不同派生的不同派生 E EE+TT+TF+TP+Tx+Tx+T/Fx+F/Fx+P/Fx+x/Fx+x/FPx+x/PPx+x/yPx+x/y2 E EE+TE+T/FE+T/FPE+T/F2E+T/P2E+T/y2E+F/y2E+P/y2E+x/y2T+x/y2F+x/y2P+x/y2x+x/y2E EE+TT+TT+T/FF+T/FF+T/FPP+T/FPx+T/FPx+F/FPx+F/F2x+F/P2x+P/P2x+P/y2x+x/y22/17/202366.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树文法文法Gexp1句子句子x+x/y22的结构。的结构。2
5、/17/202376.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树派生树派生树(derivation tree)(derivation tree)一棵一棵(有序有序)树树(orderedtree)树的每个顶点有一个标记树的每个顶点有一个标记X,且,且XVT 树根的标记为树根的标记为S;如果非叶子顶点如果非叶子顶点v标记为标记为A,v的儿子从左到右的儿子从左到右依次为依次为v1,v2,vn,并且它们分别标记为,并且它们分别标记为X1,X2,Xn,则,则AX1X2XnP;如果如果X是一个非叶子顶点的标记,则是一个非叶子顶点的标记,则XV;如果顶点如果顶点v标记为标记为,则,则v
6、是该树的叶子,并且是该树的叶子,并且v是其父顶点的惟一儿子。是其父顶点的惟一儿子。2/17/202386.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树别称别称生成树生成树分析树分析树(parse tree)(parse tree)语法树语法树(syntax tree)(syntax tree)顺序顺序v1,v2是派生树是派生树T的两个不同顶点,如果存在顶的两个不同顶点,如果存在顶点点v,v至少有两个儿子,使得至少有两个儿子,使得v1是是v的较左儿子的较左儿子的后代,的后代,v2是是v的较右儿子的后代,则称顶点的较右儿子的后代,则称顶点v1在顶点在顶点v2的左边,顶点的左边,
7、顶点v2在顶点在顶点v1的右边。的右边。2/17/202396.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树结果结果(yield)(yield)派生树派生树T的所有叶子顶点从左到右依次标记的所有叶子顶点从左到右依次标记为为X1 1,X2,Xn,则称符号串,则称符号串X1X2Xn是是T的的结果。结果。一个文法可以有多棵派生树,它们可以有一个文法可以有多棵派生树,它们可以有不同的结果。不同的结果。句型句型的派生树:的派生树:“G“G的结果为的结果为的派生树的派生树”。2/17/2023106.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树派生子树派生子树(su
8、btree)(subtree)满足派生树定义中除了对跟结点的标记的满足派生树定义中除了对跟结点的标记的要求以外各条的树叫要求以外各条的树叫派生子树派生子树(subtree)(subtree)。如果这个子树的根标记为如果这个子树的根标记为A,则称之为,则称之为A子子树。树。惟一差别是根结点可以标记非开始符号。惟一差别是根结点可以标记非开始符号。2/17/2023116.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树定理定理6-16-1设设CFGG=(V,T,P,S),S*的的充分必要条件为充分必要条件为G有一棵结果为有一棵结果为的派生树的派生树。证明:证明:证一个更为一般的结论
9、:对于任意证一个更为一般的结论:对于任意AV,A*的充分必要条件为的充分必要条件为G有一棵结果为有一棵结果为的的A-子树。子树。充分性:设充分性:设G有一棵结果为有一棵结果为的的A-子树,非叶子子树,非叶子顶点的个数顶点的个数n施归纳,证明施归纳,证明A*成立。成立。2/17/2023126.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树设设A-子树有子树有k+1个非叶子顶点,根顶点个非叶子顶点,根顶点A的的儿子从左到右依次为儿子从左到右依次为v1,v2,vm,并且,并且它们分别标记为它们分别标记为X1,X2,Xm。AX1X2XmP。以以X1,X2,Xm为根的子树的结果依次为
10、根的子树的结果依次为为1,2,m。X1,X2,Xm为根的子树的非叶子顶点为根的子树的非叶子顶点的个数均不大于的个数均不大于k。2/17/2023136.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树 X1*1X X2 2*2X Xm m*m而且而且=1 12 2m m2/17/2023146.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树AX1X2Xm*1X2Xm*12Xm*12m2/17/2023156.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树2/17/2023166.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树
11、必要性必要性设设A An n,现施归纳于派生步数,现施归纳于派生步数n n,证明存在结果为,证明存在结果为的的A-A-子树。子树。设设n nk(kk(k1)1)时时结结论论成成立立,往往证证当当n=k+1n=k+1时时结结论论也也成成立立:令令A Ak+1k+1,则有:,则有:A AX X1 1X X2 2X Xm m *1 1X X2 2X Xm m *1 12 2X Xm m *1 12 2m m 2/17/2023176.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树2/17/2023186.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树例例6-16-
12、1设设Gbra:SS(S)|,()()和和(S)(S)的派生树。的派生树。2/17/2023196.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树关于标记关于标记的结点的结点2/17/2023206.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树最左派生最左派生(leftmost derivation)(leftmost derivation)的派生过程中,每一步都是对当前句型的最的派生过程中,每一步都是对当前句型的最左变量进行替换。左变量进行替换。左句型左句型(left sentencial form)(left sentencial form)最左派生得
13、到的句型可叫做左句型。最左派生得到的句型可叫做左句型。最右归约最右归约(rightmost reduction)(rightmost reduction)与最左派生对相的归约叫做最有归约。与最左派生对相的归约叫做最有归约。2/17/2023216.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树最右派生最右派生(rightmost derivation)(rightmost derivation)的派生过程中,每一步都是对当前句型的最的派生过程中,每一步都是对当前句型的最右变量进行替换。右变量进行替换。右句型右句型(right sentencial form)(right se
14、ntencial form)最右派生得到的句型可叫做右句型。最右派生得到的句型可叫做右句型。最左归约最左归约(leftmost reductionleftmost reduction)与最左派生对相的归约叫做最右归约。与最左派生对相的归约叫做最右归约。2/17/2023226.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树规范派生规范派生(normal derivation)(normal derivation)最右派生。最右派生。规范句型规范句型(normal sentencial form)(normal sentencial form)规范派生产生的句型。规范派生产生的
15、句型。规范归约规范归约(normal reduction)(normal reduction)最左归约。最左归约。2/17/2023236.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树定理定理6-26-2如果如果是是CFGG的一个句型,则的一个句型,则G中中存在存在的最左派生和最右派生。的最左派生和最右派生。证明:证明:基本思路:基本思路:对派生的步数对派生的步数n施归纳,证明对于施归纳,证明对于任意任意AV,如果,如果An,在,在G中,存在对中,存在对应的从应的从A到到的最左派生:的最左派生:An左左。2/17/2023246.1.1 6.1.1 上下文无关文法的派生树上
16、下文无关文法的派生树AX1X2Xm*1X2Xm*12Xm*12mA左左X1X2Xm*左左1X2Xm*左左12Xm*左左12m同理可证,句型同理可证,句型有最右派生。有最右派生。2/17/2023256.1.1 6.1.1 上下文无关文法的派生树上下文无关文法的派生树定理定理6-3 6-3 如果如果是是CFGG的一个句型,的一个句型,的的派生树与最左派生和最右派生是一一对应派生树与最左派生和最右派生是一一对应的,但是,这棵派生树可以对应多个不同的,但是,这棵派生树可以对应多个不同的派生。的派生。2/17/2023266.1.2 6.1.2 二义性二义性 简单算术表达式的二义性文法简单算术表达式的
17、二义性文法Gexp2:EE+E|E-E|E/E|E*EEEE|(E)|N(L)|idE|(E)|N(L)|idNsin|cos|exp|abs|log|intLL,E|E 2/17/2023276.1.2 6.1.2 二义性二义性 EE+Ex+Ex+E/Ex+x/Ex+x/EEEx+x/yEEx+x/y22句子句子x+x/y22在文法中的三个不同的最左派生在文法中的三个不同的最左派生EE/EE+E/Ex+E/Ex+x/Ex+x/EEEx+x/yEEx+x/y22EEEE/EEE+E/EEx+E/EEx+x/EEx+x/yEx+x/y22/17/2023286.1.2 6.1.2 二义性二义性
18、对应对应3 3个不同个不同的语法的语法树树2/17/2023296.1.2 6.1.2 二义性二义性 二义性二义性(ambiguity)(ambiguity)CFG G=(V,T,P,S),如果存在wL(G),w至少有两棵不同的派生树,则称G是二二义性的义性的。否则,G为非二义性的。二义性的问题是不可解的不可解的(unsolvable)(unsolvable)问问题。题。2/17/2023306.1.2 6.1.2 二义性二义性 例例6-26-2 用其他方法消除二义性。用其他方法消除二义性。Gifa:SifEthenSelseS|ifEthenSGifm:SU|MUifEthenSUifEth
19、enMelseUMifEthenMelseM|SGifh:STS|CSCifEthenTCSelse 2/17/2023316.1.2 6.1.2 二义性二义性 例例6-3设设Lambiguity=0n1n2m3m|n,m10n1m2m3n|n,m1可以用如下文法产生语言可以用如下文法产生语言Lambiguity:G:SAB|0C3A01|0A1B23|2B3C0C3|12|1D2D12|1D2 语言语言Lambiguity不存在非二义性的文法。不存在非二义性的文法。2/17/2023326.1.2 6.1.2 二义性二义性 固有二义性的固有二义性的(inherent ambiguity)(i
20、nherent ambiguity)如果语言如果语言L不存在非二义性文法,则称不存在非二义性文法,则称L是是固有二义性的固有二义性的,又称,又称L是是先天二义性的。先天二义性的。文法可以是二义性的。文法可以是二义性的。语言可以是固有二义性的。语言可以是固有二义性的。2/17/2023336.1.3 6.1.3 自顶向下的分析和自底向自顶向下的分析和自底向上的分析上的分析 自顶向下的分析方法自顶向下的分析方法通过考察是否可以从给定文法的开始符号派生通过考察是否可以从给定文法的开始符号派生出一个符号串,可以判定一个符号串是否为该出一个符号串,可以判定一个符号串是否为该文法的句子。文法的句子。例例S
21、aAb|bBaAaAb|bBaBd2/17/202334aabdabb的派生树的自顶向下的的派生树的自顶向下的“生长生长”过程过程 2/17/2023356.1.3 6.1.3 自顶向下的分析和自底向自顶向下的分析和自底向上的分析上的分析 自底向上自底向上的分析方法的分析方法通过考察是否可以将一个符号串归约为通过考察是否可以将一个符号串归约为给定文法的开始符号,完成判定一个符给定文法的开始符号,完成判定一个符号串是否为该文法的句子的任务。号串是否为该文法的句子的任务。和归约与派生是互逆过程相对应,自顶向和归约与派生是互逆过程相对应,自顶向下的分析与自底向上的分析互逆的分析过下的分析与自底向上的
22、分析互逆的分析过程。程。2/17/202336aabdabb的派生树的自底向上的的派生树的自底向上的“生长生长”过程过程 2/17/2023376.2 6.2 上下文无关文法的化简上下文无关文法的化简 如下文法如下文法含有无含有无用的用的“东西东西”G1:S0|0A|EA|0A|1A|BB_CC0|1|0C|1CD1|1D|2DE0E2|E02 去掉去掉无用无用“东西东西”后的后的文法文法G2:S0|0AA|0A|1A|BB_CC0|1|0C|1C2/17/2023386.2 6.2 上下文无关文法的化简上下文无关文法的化简去掉产生式去掉产生式A后后的的文法文法G3:S0|0AA0|1|0A|
23、1A|BB_CC0|1|0C|1C去掉产生式去掉产生式AB后的后的文法文法G4:S0|0AA0|1|0A|1A|_CC0|1|0C|1C可以去掉文法中的无用符号、可以去掉文法中的无用符号、产生式和产生式和单一产生式。单一产生式。2/17/2023396.2.1 6.2.1 去无用符号去无用符号 无用符号无用符号(useless symbol)(useless symbol)对于任意对于任意XVT,如果存在,如果存在wL(G),X出现在出现在w的派生过程中,即存在的派生过程中,即存在,(VT)*,使得,使得S*X*w,则称,则称X是有用的,否则,称是有用的,否则,称X是是无用符号。无用符号。对对
24、CFG G=(VCFG G=(V,T T,P P,S)S)G G中的符号中的符号X既可能是有用的,也可能既可能是有用的,也可能是无用的。当是无用的。当X是无用的时候,它既可能是无用的时候,它既可能是终极符号,也可能是语法变量。是终极符号,也可能是语法变量。2/17/2023406.2.1 6.2.1 去无用符号去无用符号 对于任意对于任意XVT,如果,如果X是有用的,是有用的,它必须同时满足如下两个条件:它必须同时满足如下两个条件:存在存在wT*,使得,使得X*w;,(VT)*,使得,使得S*X。注意到文法是语言的有穷描述,所以,注意到文法是语言的有穷描述,所以,集合集合V,T,P都是有穷的。
25、从而我们有都是有穷的。从而我们有可能构造出有效的算法,来完成消除文可能构造出有效的算法,来完成消除文法的无用符号的工作。法的无用符号的工作。2/17/2023416.2.1 6.2.1 去无用符号去无用符号 算法算法 6-1 6-1 删除派生不出终极符号行的变量。删除派生不出终极符号行的变量。输入:输入:CFGG=(V,T,P,S)。输出:输出:CFGG=(V,T,P,S),V中不含中不含派生不出终极符号行的变量,并且派生不出终极符号行的变量,并且L(G)=L(G)。主要步骤:主要步骤:2/17/2023426.2.1 6.2.1 去无用符号去无用符号(1)OLDV=;(2)NEWV=A|Aw
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 形式语言 自动机 理论 电子 教案
限制150内