当前位置:文档之家› 第7课 第3章_文法和语言_推导&类型&语法树

第7课 第3章_文法和语言_推导&类型&语法树

E E + E E * E a a a
共17页
E E * E a E + E a a
11
一个二义性程序语句

条件语句的二义文法:


S if expr then S S if expr then S else S S 其他语句(此处不再详细定义) if e1 then if e2 then s1 else s2
共17页
9
二义(Ambiquity)文法
若一个文法存在某个句子对应两棵不同 的语法树,则称这个文法是二义的 或者, 若一个文法存在某个句子有两个不同的 最左(右)推导,则称这个文法是二义 的

共17页
10
二义文法的例 E → a | E+E | E*E | (E)
非CFG在程序语言中的应用

在我们使用的程序语言中,有些语言结构 并不是总能用上下文无关文法描述的。 例:L1={wcw|w∈{a,b}+}。 aabcaab就 是L1的一个句子。

这个语言是检查程序中标识符的声明应先于 引用的抽象 它是检查过程声明的形参个数和过程引用的 参数个数一致问题的抽象。
通过对产生式施加不同的限制, Chomsky将文法分为四种类型: 0、1、2、3
共17页
4
Noam ·Chomsky
乔姆斯基(1928- ),美国语言学家,1972 年当选为国家科学院院士 他用类似数学公式的式子,来建立生成语 法体系,并以此来描写自然语言。 Chomsky的成果在心理学、医学、哲学、 逻辑学以及计算机学上都有很重要的应用

共17页 7
语法树的结果及其定理

从左到右读出叶子的标记,这样构成的 序列称为该语法树的结果 CFG的语法树结果定理 若G为CFG,对于α ≠ε ,有S =>* α , 当且仅当文法G有以α 为结果的一棵语法 树(推导树)
共17页
8
关于语法树的几点说明


语法树的结构反映了句型的语法结构 一棵语法树可以对应一个句型的多个推 导过程 有的句型可能对应多棵语法树(二义文 法)
第3章 文法和语言
湖南师范大学《编译原理》 授课教师:罗迅
推导

Derive
推导就是替换,用规则的右边去替换规则 的左边 一步推导只能使用一条规则

归约,也是替换
共17页
2
语言的例子
S → 0S1 | 01

这个产生式所定义的语言是如下集合:

L(G) = {0n1n|n≥1}
共17页
3
文法的类型
之二
if e1 then if e2 then s1 else s2 S S if expr then S S if expr then S else S S 其他语句(此处不再 详细定义)
if expr e1 if
then
S
else S s2
expr e2
then
S s1
共17页 15

共17页
5
文法的类型的关系
四种文法之间的逐级“包含”关系
0型文法 1型文法 2型文法 3型文法
共17页
6
语法树
设G=( VN,VT,P,S)为一CFG,若一棵树满足 下列4个条件,则此树称作G的语法树(推导树):
每个结点都有一个标记,此标记是V的一个符号 根的标记是S 若一结点n是内部结点,并且有标记A,则肯定 A∈VN 如果结点n有标记A,其直接子孙结点从左到右的 次序是n1,n2,…,nk,其标记分别为A1, A2,…,Ak,那么A→A1A2,…,Ak一定是P中 的一个产生式
共17页 13
两棵语法树之一
if e1 then if e2 then s1 else s2 S if expr e1 if expr e2 then S s1 else S s2
共17页 14
then
S
S if expr then S S if expr then S else S S 其他语句(此处不再 详细定义)
共17页 16

例:L2={anbmcndm|n,m≥0}。

课后作业

教材第3章第7、9题
共17页
17

条件语句的二义语句

共17页
12
C语言中的if语句
二义语句:if e1 then if e2 then s1 else s2 if e1 { if e2 s1; else s2; } if e1 {if e2 s1;} else {s2;} 注意:C语言中没有“then”这个符号,多了花括号
相关主题