设有
C
F
G
?
G
=
(
V
,
T
,
P
,
S
)
CFG \ G = (V , T , P , S)
CFG?G=(V,T,P,S),
G
G
G的派生树是满足如下条件的(有序)树
树的每个顶点有一个标记
X
X
X,且
X
∈
V
∪
T
∪
{
?
ε
?
}
X \in V \cup T \cup \set{\varepsilon}
X∈V∪T∪{ε}
树根的标记为
S
S
S
如果一个非叶子顶点
v
v
v标记为
A
A
A,
v
v
v的儿子从左到右依次为
v
1
v_{1}
v1?,
v
2
v_{2}
v2?,
?
\cdots
?,
v
n
v_{n}
vn?,并且它们分别标记为
X
1
X_{1}
X1?,
X
2
X_{2}
X2?,
?
\cdots
?,
X
n
X_{n}
Xn?,则
A
→
X
1
X
2
?
X
n
∈
P
A \rightarrow X_{1} X_{2} \cdots X_{n} \in P
A→X1?X2??Xn?∈P
如果
X
X
X是一个非叶子顶点的标记,则
X
∈
V
X \in V
X∈V
如果一个顶点
v
v
v标记为
ε
\varepsilon
ε,则
v
v
v是该树的叶子,并且
v
v
v是其父顶点的唯一儿子
派生树也称为生成树、分析树、语法树
设有文法
G
G
G的一颗派生树
T
T
T,
v
1
v_{1}
v1?和
v
2
v_{2}
v2?是
T
T
T的两个不同的顶点,如果存在顶点
v
v
v,
v
v
v至少有两个儿子,使得
v
1
v_{1}
v1?是
v
v
v的较左儿子的后代,
v
2
v_{2}
v2?是
v
v
v的较右儿子的后代,则称顶点
v
1
v_{1}
v1?在顶点
v
2
v_{2}
v2?的左边,顶点
v
2
v_{2}
v2?在顶点
v
1
v_{1}
v1?的右边
派生树的结果
设有文法
G
G
G的一颗派生树
T
T
T,
T
T
T的所有叶子顶点从左到右依次标记为
X
1
X_{1}
X1?,
X
2
X_{2}
X2?,
?
\cdots
?,
X
n
X_{n}
Xn?,则称符号串
X
1
X
2
?
X
n
X_{1} X_{2} \cdots X_{n}
X1?X2??Xn?是
T
T
T的结果
对于任意一个
C
F
G
?
G
CFG \ G
CFG?G,称“
G
G
G的结果为
α
\alpha
α的派生树”为
G
G
G的对应于句型
α
\alpha
α的派生树,简称为句型
α
\alpha
α的派生树
派生子树
派生子树不需要满足树根的标记为
S
S
S
如果这个子树的根标记为
A
A
A,则称之为
A
A
A子树
定理
1
1
1
设
C
F
G
?
G
=
(
V
,
T
,
P
,
S
)
CFG \ G = (V , T , P , S)
CFG?G=(V,T,P,S),
S
?
?
α
S \xRightarrow{*} \alpha
S??α的充分必要条件为
G
G
G有一棵结果为
α
\alpha
α的派生树
最左派生和最右派生
设有
C
F
G
?
G
=
(
V
,
T
,
P
,
S
)
CFG \ G = (V , T , P , S)
CFG?G=(V,T,P,S),
α
\alpha
α是
G
G
G的一个句型
如果
α
\alpha
α是
C
F
G
?
G
CFG \ G
CFG?G的一个句型,则
G
G
G中存在
α
\alpha
α的最左派生和最右派生
二义性
设有
C
F
G
?
G
=
(
V
,
T
,
P
,
S
)
CFG \ G = (V , T , P , S)
CFG?G=(V,T,P,S),如果存在
w
∈
L
(
G
)
w \in L(G)
w∈L(G),
w
w
w至少有两颗不同的派生树,则称
G
G
G是二义性的,否则称
G
G
G为非二义性的
没有一个一般的方法来证明一个文法不是二义性的,判定任给
C
F
G
?
G
CFG \ G
CFG?G是否为二义性的问题是一个不可解的问题
如果语言
L
L
L不存在非二义性文法,则称
L
L
L是固有二义性的,又称
L
L
L是先天二义性的