- 1、本文档共104页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章上下文无关语言
第5章 上下文无关语言 Gbra:S?S(S)|ε L(Gbra)不是RL,是CFL 一、 上下文无关语言 文法G=(V,T,P,S)被称为是上下文无关的。 如果除了形如A?ε的产生式之外,对于?α?β∈P,均有|β|≥|α|,并且α∈V成立(β∈(V∪T)*)。 关键:对于?A∈V,如果A?β∈P,则无论A出现在句型的任何位置,我们都可以将A替换成β,而不考虑A的上下文。 上下文无关文法的派生树 算术表达式的文法 Gexp1:E?E+T|E-T|T T?T*F|T/F|F F?F↑P|P P?(E)|N(L)|id N?sin|cos|exp|abs|log|int L?L,E|E 算术表达式x+x/y↑2的不同派生 文法Gexp1句子x+x/y↑2的结构。 派生树(derivation tree) 一棵(有序)树(ordered tree) 树的每个顶点有一个标记X,且X∈V∪T∪{ε} 树根的标记为S; 如果非叶子顶点v标记为A,v的儿子从左到右依次为v1,v2,…,vn,并且它们分别标记为X1,X2,…,Xn,则A?X1X2…Xn∈P; 如果X是一个非叶子顶点的标记,则X∈V; 如果顶点v标记为ε,则v是该树的叶子,并且v是其父顶点的惟一儿子。 别称 生成树、分析树(parse tree)、语法树(syntax tree) 顺序 v1,v2是派生树T的两个不同顶点,如果存在顶点v,v至少有两个儿子,使得v1是v的较左儿子的后代,v2是v的较右儿子的后代,则称顶点v1在顶点v2的左边,顶点v2在顶点v1的右边。 结果(yield) 派生树T的所有叶子顶点从左到右依次标记为X1,X2,…,Xn,则称符号串X1X2…Xn是T的结果。 一个文法可以有多棵派生树,它们可以有不同的结果。 句型α的派生树:“G的结果为α的派生树”。 派生子树(subtree) 满足派生树定义中除了对跟结点的标记的要求以外各条的树叫派生子树(subtree)。 如果这个子树的根标记为A,则称之为A子树。 惟一差别是根结点可以标记非开始符号。 定理1 设CFG G=(V,T,P,S),S?*α的充分必要条件为G有一棵结果为α的派生树。 证明: 证一个更为一般的结论:对于任意A∈V,A?*α的充分必要条件为G有一棵结果为α的A-子树。 充分性:设G有一棵结果为α的A-子树,非叶子顶点的个数n施归纳,证明A?*α成立。 设A-子树有k+1个非叶子顶点,根顶点A的儿子从左到右依次为v1,v2,…,vm,并且它们分别标记为X1,X2,…,Xm 。 A?X1X2…Xm∈P 。 以X1,X2,…,Xm为根的子树的结果依次为α1,α2,…,αm 。 X1,X2,…,Xm为根的子树的非叶子顶点的个数均不大于k。 X1?*α1 X2?*α2 … Xm?*αm 而且 α=α1α2…αm 必要性 设A?nα,现施归纳于派生步数n,证明存在结果为α的A-子树。 设n≤k(k≥1)时结论成立,往证当n=k+1时结论也成立:令A?k+1α,则有: A?X1X2…Xm ?*α1X2…Xm ?*α1α2…Xm … ?*α1α2…αm 例2 设Gbra:S?S(S)|ε,(( )(( )))和(S)((S))的派生树。 关于标记ε的结点 最左派生(leftmost derivation) α的派生过程中,每一步都是对当前句型的最左变量进行替换。 左句型(left sentencial form) 最左派生得到的句型可叫做左句型。 最右归约(rightmost reduction) 与最左派生对相的归约叫做最右归约。 最右派生(rightmost derivation) α的派生过程中,每一步都是对当前句型的最右变量进行替换。 右句型(right sentencial form) 最右派生得到的句型可叫做右句型。 最左归约(leftmost reduction) 与最左派生对相的归约叫做最右归约。 规范派生(normal derivation) 最右派生。 规范句型(normal sentencial form) 规范派生产生的句型。 规范归约(normal reduction) 最左归约。 定理2 如果α是CFG G的一个句型,则G中存在α的最左派生和最右派生。 证明: 基本思路:对派生的步数n施归纳,证明对于任意A∈V,如果A?nα,在G中,存在对应的从A到α的最左派生:A?n左α。 A?X1X2…Xm ?*α1X2…Xm ?*α1α2…Xm … ?*α1α2…αm 定理3 如果α是CFG G的一个句型,α的派生树与最左派生和最右派生是一一对应的,但是
文档评论(0)