第二章上下文无关文法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2016/3/18
设计上下文无关文法
设计上下文无关文法比设计有穷自动机更加棘手 设计上下文无关的一些基本技巧: 首先,化繁为简,把一个CFL问题分解成几个简 单的CFL问题 其次,利用正则,如果一个语言碰巧是正则的, 则可先构造它的DFA,再构造其CFG
再次,考察子串
最后,利用递归
上下文无关语言与高级程序语言
生成条件语句if„then„和if„then„else 的上下文无关文法(具有二义性) S→if C then S S→if C then S else S S→a|b C→p|q If p then if q then a else b
S if C p then if C q
分或语法范畴,可分解为若干非终结符或终结符
VT是终结符的有穷集合,是基本符号,不能再分解 V=VN∪VT称为字汇表(字母表),VN∩VT=Ф 。 Z是开始符,Z∈VN,P是规则式(产生式)有穷集合 规则式形如:x→y,其中x∈V*VNV*, 称为规则式的左
部;y∈V*称为右部。
2016/3/18
2016/3/18
S S then S a else S b if C p then if C q S else S
then
S b a
上下文无关语言与高级程序语言
生成条件语句if„then„和if„then„else的 上下文无关文法(消除二义性) S→S1|S2 S1→if C then S1 else S2 |T S2→if C then S |if C then S1 else S2 |T T→a|b C→p|q If p then if q then a else b
if C
p S
then
if C
S1 (或S2)
then S1 else S2
q
2016/3/18
T
a
T
b
形式语言与自然语言
上下文无关文法也可以描述自然语言 (以英语为例) S→NP VP S NP→Det N | Det A N NP A→Adj A |Adj VP VP→Vbe PP Det A N Vbe PP PP→Prep NP Vbe→am | is |are the Adj A ball is Prep NP Det→a | an | the Prep→on | in | for | … big Adj on Det N V→ play | go | …. red the table N→ boy | girl | … Adj→small | big | high | …. The big red ball is on the table的推导树
2016/3/18
歧义性例子
一个歧义文法G5: <EXPR><EXPR>+<EXPR>|<EXPR>*<EXPR>|(<EXPR>)|a
这个文法歧义地产生字符串a+a*a
EXPR EXPR EXPR a + EXPR EXPR
EXPR EXPR
EXPR
a * a a
EXPR + a
*
EXPR
2016/3/18
上下文无关文法的推导和派生
设u,v和ω 是由变元及终结符构成的字符串, Aω 是文法的一条规则,称uAv生成uω v,记作 uAv⇒uω v。如果u=v,或者存在序列u1,u2,, uk,使得 u⇒u1⇒u2⇒⇒uk⇒v 其中k≥0,则称u派生v,记作u⇒*v。 该文法的语言是{ω ∈∑*|S⇒*ω }
2016/3/18
girl touches the
boy
with
the
flower
歧义派生语法树2
The girl touches the boy with the flower 在G2文法下的语法分析树2
<句子> <名词短语> <复合名词>
<动词短语> <复合动词>
<介词短语>
<冠词> <名词> <动词> <名词短语> <介词> <复合名词> <复合名词> <冠词> <名词>
2016/3/18
歧义性概述
如果一个文法以不同的方式产生同一个字 符串,则称文法歧义地产生这个字符串
如果一个文法歧义地产生某个字符串,则 称这个文法是歧义的
2016/3/18
歧义性概述
一个文法歧义地产生一个字符串的意思是:该 字符串是两棵不同的语法分析树,而不是两种 不同的派生,两种不同的派生可能仅仅是替换 变元的次序不同,而不是整个结构的不同 对于文法G中的一个字符串ω 的派生,如果在 每一步都是替换最左边剩下的变元,则称这个 派生是最左派生
第2章 上下文无关文法
研究内容 上下文无关文法概述
下推自动机
非上下文无关语言
2016/3/18
上下文无关文法的应用
上下文无关文法的重要性如下
表达能力强大足于表示大多数程序设计语言语法
可以构造有效的分析算法以检验一个给定的字符
串是否由某个上下文无关文法产生
上下文无关语言在实践中的重要意义 定义程序设计语言:例如BNF范式
文法的类型
Chomsky将文法分为四种类型: 0型文法(短语结构文法,可压缩的上下文有关文
法),最一般的文法,对规则无限制
u→w
u∈V*VNV*
w∈V*(可为ε )
相应的自动机是图灵机 1型文法(上下文有关文法,不可压缩的上下文有关
文法),对规则有些限制
xuy→xwy
x和y就是上下文,x,y∈V*,u∈V*∪VN, w∈V+(不可为ε ),这些限制也可以写成:
2016/3/18
基本的语法分析方法
基本的语法分析方法有两种:
自顶向下分析法:从文法的开始符号出发,能 否找到一个最左推导序列导出w,即S⇒+w,或 者从根节点S开始,是否能向下构造一棵推导 树产生串w 自底向上分析法:从字符串w出发寻找一个归 约序列,逐步对可归约串向上进行归约,直到 文法的开始符号S
2016/3/18
设计上下文无关文法
将一台DFA转变成等价的CFG 为DFA的每个状态qi指定一个变元Ri, 如果δ (qi,a)=qj是DFA的一个转移,则把 规则RiaRj加入CFG 如果qi是DFA的接受状态,则把规则Riε 加入CFG
如果q0是DFA的起始状态,则取R0作为CFG 的起始变元
2016/3/18
上下文无关文法的形式化定义
定义2.1 上下文无关文法是一个4元组G=(V,,R,S)
V: 一个有穷集,称为变元集
: 一个有穷集,称为终结符集,(V=) R: 有穷规则集,V(V)* SV: 起始变元
文法G的语言可以表示为 L(G)={w*|S*w} 规则左边是单个变元符号,右边的所有符号属于集 合V∪
2016/3/18
基本的语法分析方法
对给定的上下文无关文法G=(VN, VT, P, Z )及符 号串w∈VT*,语法分析就是判断串w是否是文 法G产生的合法句子,即S⇒*w是否成立?
对于计算机程序语言及其编写的程序而言,语 法分析的任务就是判断程序中的各个句子是否 合法?进一步判断整个程序是否合法?
一个歧义文法G2: <句子><名词短语><动词短语>

2016/3/18
<名词短语><复合名词>|<复合名词><介词短语> <动词短语><复合动词>|<复合动词><介词短语> <介词短语><介词><复合名词> <复合名词><冠词><名词> <复合动词><动词>|<动词><名词短语> <冠词>a | the <名词>boy | girl | flower <动词>touches | likes | sees <介词>with
2016/3/18
上下文无关文法的形式化定义
在描述一个文法时,通常只写出它的规则
出现在规则左边的符号都是变元,其余的 符号都是终结符,按照惯例,起始变元是 第一条规则左边的变元
2016/3/18
上下文无关文法举例
例题2.2:考虑文法G3: 例题2.3:考虑文法G4及其生成字符串a+a*a 和(a+a)*a的语法分析树及其过程 编译程序把用程序设计语言编写的代码翻译 成另一种更适合机器执行的代码 编译程序提取被编译代码的语义,这一个过 程称为语法分析
u→w
|u|≤|w| 意为串的长度不可压缩
相应的自动机是线性界限自动机
2016/3/18
文法的类型
2型文法(上下文无关文法,简单短语结构文
法),对规则的限制
A→w
A∈VN
w∈V*(可为ε )
2型文法与字典定义形式相近(一个字用另一
些字定义),与人们习惯一致。
相应的自动机是下推自动机,与 BNF 等价。左
部均为非终结符
2016/3/18
文法的பைடு நூலகம்型
3型文法(正规文法,正则文法),规则是
线性的,其中
左线性:A→Ba 右线性:A→aB A,B∈VN, a∈VT 相应的自动机是有限自动机。在程序设计语
A→a A→a
言中,单词符号用3型文法定义。
2016/3/18
上下文无关文法概述
上下文无关文法是把变量转化为原语符号 串的一组规则,即变量变量或原语符号 组成的串 上下文无关文法最早被用来描述自然语言 的一些规则,在计算机语言学中,Backus 范式可以用来表示一种程序设计语言的各 种规定,例如字符集、标识字符集、标识 符以及各种语句的格式等
2016/3/18
上下文无关语言与高级程序语言
生成标识符的上下文无关文法 S→SA|A|SD A→a|b|c…w|x|y|z|_ D→0|1|2|3|4|5|6|7|8|9 生成正整形常量的上下文无关文法 S→A|BC C→CA|A B→|1|2|3|4|5|6|7|8|9 A→0|B
2016/3/18
2016/3/18
上下文无关文法概述
文法G=(V, ,R,S)被称为是上下文无关文法或2 型文法。 如果对于α β ∈R,均有|β |≥|α |, 并且α ∈V成立。
关键:对于A∈V,如果Aβ ∈P,则无论A出现在 句型的任何位置,我们都可以将A替换成β ,而不 考虑A的上下文。
L(G)叫做2型语言(type 2 language)或者上下文无 关语言(context free language, CFL)。
2016/3/18
上下文无关文法(例子)
构造上下文无关文法G,它所产生的语言为字母表{0,1} 上所有回文全体,即L(G)={w∈{0,1}*|w=wR} G=({S},{0,1};R,S),其中R:S|1|0;SOSO|1S1 分别构造如下三个语言的上下文无关文法 L1={anbn|n≥1};L2={anbncmdm|n,m≥1}
a
2016/3/18
歧义性的形式化描述
定义2.4:如果字符串ω 在上下文法G中有两个 或两个以上不同的最左派生,则称G歧义地产生 字符串ω ,如果文法G歧义地产生某个字符串, 则称G是歧义的。 固有歧义:某些上下文无关语言只能用歧义文 法产生,这样的语言称为固有歧义的。
2016/3/18
上下文无关歧义文法G2
L3={anbmcmdn|n,m≥1}
G1=({S},{a,b};R1,S),其中R1:SaSb|ab G2=({S,A,B},{a,b,c,d};R2,S),其中 G2=({S,A},{a,b,c,d};R3,S),其中
R2:SAB,A→aAb|ab,BcBd|cd
R2:SaSd|aAd,A→bAc|bc
描述文档格式:例如XML,HTML
使语法分析概念形式化 简化程序设计语言的翻译:例如设计语法分析器
2016/3/18
上下文无关文法的应用
语法分析程序
语法分析程序生成器 超文本标记语言 可扩展标记语言
2016/3/18
文法的形式定义
文法G是一个四元组:G=(VN, VT, P, Z ),其中: VN是非终结符的有穷集合,也称为语法单元、语法成
歧义派生语法树1
The girl touches the boy with the flower 在G2文法下的语法分析树1:
<句子>
<名词短语>
<复合名词>
<动词短语> <复合动词> <名词短语>
<冠词> <名词> <动词>
<复合名词>
<介词短语>
<冠词> <名词> <介词> <复合名词> <冠词> <名词> The
相关文档
最新文档