第2章程序语言基础知识
编译原理2-78
1.文法
认识终结符(不可拆分,小写)和非终结符(可拆分,大写)
终结符不可单独置前
eg:有文法G2[S]为:
S->Ap
S->Bq
A->a
A->cA
B->b
B->dB
则:S为开始符,S,A,B为非终结符,p,q,a,b,c,d为终结符
文法的类型
0型文法(限制最少的一个)
设G=(V N,V T ,P,S),如果它的每个产生式α---→β是这样结构:
α属于(V N并V T)*(闭包)且至少含有一个非终结符,而β属于(V N并V T)*,则G是一个0型文法。
0型文法也称短语文法。
一个非常重要的理论结果是:0型文法的能力相当于图灵机(Turing)。
或者说,任何0型语言都是递归可枚举的,反之,递归可枚举集必定是一个0型语言。
1型文法
也叫上下文有关文法,此文发对应于线性有界自动机。
它是在0型文法的基础上每一个α---→β,都有|β|>=|α|。
这里的|α|表示的是α的长度。
注意:虽然要求|β|>=|α|,但有一特例:α---->空也满足1型文法。
如有A->Ba 则|β|=2,|α|=1 符合1型文法要求。
反之,如aA->a,则不符合1型文法要求。
2型文法
也叫上下文无关文法,它对应于下推自动机。
2型文法是在1型文法的基础上,再满足每一个α-→β
都有α是非终结符。
如A->Ba,符合2型文法要求。
如Ab->Bab虽然符合1型文法要求,但是不符合2型文法要求,其中α=Ab,Ab不是一个非终结符。
3型文法
也叫正规文法,它对应于有限状态自动机。
它是在2型文法满足的基础上满足:
A->α|αB(右线性)或A->α|Bα(左线性)
如:A->a,A->aB,B->a,B->cB,则符合3型文法的要求。
但如果推导为:A->ab,A->aB,B->a,B->cB
或:A->a,A->Ba,B->a,B->cB则不符合3型文法的要求。
如何判断一个串是否为某个文法的句型
Eg1:已知文法G[S ] : S->A0|B1 ,A->S1|1 ,B->S0|0 :该文法属于桥穆斯定义的___( 1 )___文法,它不能产生串___( 2 )__。
(1) A.0型 B.1型 C.2型 D.3型
(2) A.0011 B.1010 C.1001 D.0101
S->A0 S->B1
A->S1 A-> 1
B->S0 B->0
S->A0->S10->A010->1010
S->A0->S10->B110->0110
S->B1->S01->A001->1001
S->B1->S01->B101->0101
S
/ \
A 0
/ \
S 1
/ \
A 0
/ \
1
2.正规式
正规式与正规文法之间的转换
文法G[S] :S->xSx|y 所描述的语言是_______(n>=0)
A.(xyx)n
B. xyx n
C.xy n x
D. x n yx n
Eg:
对于以下编号为1,2,3的正规式,正确的说法是____正则式2,3等价______。
1.(aa*|ab)* b
2.(a|b) * b
3.((a|b) * |aa) * b
(a|b) * 与((a|b) * |aa) *都是a与b的任意组合。
Eg:
语言L={a m b m|m>=0,n>=1}的正规表达式是_______。
A.a*bb*
B.aa*bb*
C.aa*b*
D.a*b*
L=am(m>=0)的正规表达式是a*
3.有限自动机(有穷自动机)
NFA(不确定的有限自动机)与DFA(确定的有限自动机)
确定的有限自动机(DFA)的定义:
一个确定的有限状态自动机M(记做DFAM)是个五元组: M={S,∑,f,S0,Z}
其中:
1)S是一个有限状态集合
2)∑是一个字母表,它的每个元素称为一个输入字符
3)f是一个从S*∑值S的单值部分映射。
f (s,a)=s` 意味着:当现行状态为s,输入字符为a时,将转换到下一个状态s`。
我们称s` 为s 的
一个后继状态。
4)S0属于S,是唯一的初态
5)Z 包含于S,是一个终态集
Eg:
有限状态自动机可以形象地用状态转换图来表示,设有限状态自动机:
DFA=({S,A,B,C,f },{1,0},F,S,{ f }),其中:
K(S,0)=B,K(S,1)=A,K(A,0)= f ,K(A ,1)=C,K(B,0)=C,
K(B,1)=f,K(C,0)=f ,K(C,1)=f ,画出对应的状态转换图:
不确定的有限自动机(NFA)的定义:
S0包含于S,是一个非空初态集
Z 包含于S,是一个终态集
NFA转化为DFA
Eg:
已知一不确定的有限自动机(NFA)如图所示,采用自己发将其确定为DFA的过程如下所示:
状态集T1中不包括编号为______(1)_____的状态,状态集T2中的成员有
______(2)_____,状态集T3等于______(3)_____。
1)A. 2 B. 4 C. 3 D. 5
2)A. 1,3,4,5,Z B. 2,3 C. 6 D.4,5,Z
4个中只有T1 ,{4,5,Z}可在下排,股T2={4,5,Z}
.将输入数得出结果不同的非空集合编号
1
2 3
3 4
正规式与有限自动机之间的转化
Eg:
把下面的正规式转换成有限自动机:表示符,a(字母),d(数字) ( _ | a ) ( _ | a | d )
*
Eg:
某一非确定性有限自动机(NFA)的状态转换图如图所示,该NFA等价的正规式是______。
q0即是初态,也是终态
A.0* | ( 0 | 1 ) 0 B.(0|10)* C. 0*((0|1)0)*
D.0*(10)*
C、D 0100表现不出
4.语法推导树
一棵语法树应具有一下特征:
1)每个节点都有一个标记,此标记是V的一个符号V终结符Vt与非终结符Vn 的集合
2)根的标记是S
3)若一节点n至少有一个它自己除外的子孙,并且有标记A,则A肯定在Vn中4)如果节点n的直接子孙,从左到右的次序是节点n1,n2,….nk, 其标记分别是:A1,A2,..Ak,那么
A->A1A2..Ak,一定是P中的一个产生式。
Eg:
文法G=({a,b},{S,A},S,P),其中S->aAS|a A->SbA|SS|ba
请构造句型aabAa的推导树。
S->aAS
S->a
A->SbA
A->SS
A->ba
短语、简单短语、句柄
令G是一文法,S是文法的开始符号,abc是文法G的一个句型。
如果有
,则称b是句型abc相对于非终结符A的短语。
特别是,如有A=>b,则称b 是句型abc相对于规则
A->b的直接短语(也称简单短语)。
一个句型的最左直接短语成为该句型的句柄。
Eg:
一个上下文无关文法生成句子abbaa的推导树如图所示。
5.算符优先***
难(可放弃)。