字母表∑:一个非空有穷符号集合
∑ 1 ∑ 2 = { a b ∣ a ∈ ∑ 1 , b ∈ ∑ 2 } ∑_1∑_2=\{ab|a∈∑_1,b∈∑_2\} 1∑2∑={ab∣a∈1∑,b∈2∑}
n = 0 : ∑ 0 = { ε } n ≥ 1 : ∑ n = ∑ n − 1 ∑ n=0:∑^0=\{ε\}\\ n≥1:∑^n=∑^{n-1} ∑ n=0:∑0={ε}n≥1:∑n=∑n−1∑
∑ + = ∑ ∪ ∑ 2 ∪ ∑ 3 … … ∑^+=∑∪∑^2∪∑^3…… ∑+=∑∪∑2∪∑3……
∑ ∗ = ∑ 0 ∪ ∑ + = ∑ 0 ∪ ∑ ∪ ∑ 2 ∪ ∑ 3 … … ∑^*=∑^0∪∑^+=∑^0∪∑∪∑^2∪∑^3…… ∑∗=∑0∪∑+=∑0∪∑∪∑2∪∑3……
串:字母表中的符号的一个有穷序列
串s的长度:s中符号的个数,通常记作|s|,例如 |abc|=3
空串:长度为0的串,用ε(epsilon)表示,|ε|=0
设x,y,z 是三个字符串,如果 x= y z ,则称 y 是 x 的前缀 z 是 x 的后缀
空串 ε 是连接运算的单位元,对于任何串 s 都有, ε s = s ε = s
串 s 的 n 次幂:
⑴当 n = 0 时, s 0 = ε ⑵当 n ≥ 1 时, s n = s n − 1 s ⑴当 n =0 时,s^0=ε\\ ⑵当 n ≥1 时,s^n=s^{n-1}s ⑴当n=0时,s0=ε⑵当n≥1时,sn=sn−1s
设 Σ 是一个字母表, ∀ L ⊆ Σ ∗ ,则 L 称为字母表 Σ 上的一个语言。 设Σ是一个字母表,{\forall}L{\subseteq}Σ^*,则L称为字母表Σ上的一个语言。 设Σ是一个字母表,∀L⊆Σ∗,则L称为字母表Σ上的一个语言。
句子
∀ x ∈ L , x 称为语言 L 的一个句子。 {\forall}x{\in}L,x称为语言L的一个句子。 ∀x∈L,x称为语言L的一个句子。
Σ 1 和 Σ 2 是字母表, L 1 ⊆ Σ 1 ∗ , L 2 ⊆ Σ 2 ∗ ∗ , 语言 L 1 与 L 2 的乘积是字母表 Σ 1 ∪ Σ 2 上的一个语言, 该语言定义为: L 1 L 2 = { x y ∣ x ∈ L 1 , y ∈ L 2 } Σ_1和Σ_2是字母表,L_1{\subseteq}Σ_1^*,L_2{\subseteq}Σ_2^**,\\ 语言 L_1与 L_2 的 乘积 是字母表 Σ_1∪Σ_2上的一个语言,\\ 该语言定义为:\\ L_1L_2=\{xy|x{\in}L_1,y{\in}L_2\} Σ1和Σ2是字母表,L1⊆Σ1∗,L2⊆Σ2∗∗,语言L1与L2的乘积是字母表Σ1∪Σ2上的一个语言,该语言定义为:L1L2={xy∣x∈L1,y∈L2}
字母表表 Σ , ∀ L ∈ Σ ∗ , L 的 n 次幂是一个语言, 该语言定义为: ⑴当 n = 0 时, L n = { ε } ⑵当 n ≥ 1 时, L n = L n − 1 L 字母表表Σ,{\forall}L{\in}Σ^*,L的n次幂是一个语言,\\ 该语言定义为:\\ ⑴当 n =0 时, L^n=\{ε\}\\ ⑵当 n ≥1 时, L^n = L ^{n-1} L 字母表表Σ,∀L∈Σ∗,L的n次幂是一个语言,该语言定义为:⑴当n=0时,Ln={ε}⑵当n≥1时,Ln=Ln−1L
L 的正闭包 L + 是一个语言, 该语言定义为: L + = L ∪ L 2 ∪ L 3 ∪ L 4 ∪ … … L 的正闭包 L^+ 是一个语言,\\ 该语言定义为:\\ L^+=L∪L^2∪L^3∪L^4∪…… L的正闭包L+是一个语言,该语言定义为:L+=L∪L2∪L3∪L4∪……
L 的克林闭包 L ∗ 是一个语言, 该语言定义为: L ∗ = L 0 ∪ L ∪ L 2 ∪ L 3 ∪ L 4 ∪ … … L 的克林闭包 L^* 是一个语言,\\ 该语言定义为:\\ L^*=L^0∪L∪L^2∪L^3∪L^4∪…… L的克林闭包L∗是一个语言,该语言定义为:L∗=L0∪L∪L2∪L3∪L4∪……
文法是用于描述语言的语法结构的形式规则。
文法可以定义为一个四元组 ( V T , V N , S , P ) − 终结符号集合 V T − 非终结符号集合 V N − 产生式集合 P : α → β − 特定的非终结符:开始符号 S 文法可以定义为一个四元组(V_T,V_N,S,P)\\ - 终结符号集合V_T\\ - 非终结符号集合V_N\\ - 产生式集合P:α {\rightarrow}β\\ - 特定的非终结符:开始符号S 文法可以定义为一个四元组(VT,VN,S,P)−终结符号集合VT−非终结符号集合VN−产生式集合P:α→β−特定的非终结符:开始符号S
V T ∩ V N = ∅ V T ∪ V N :文法符号集 产生式:描述了将终结符和非终结符组合成串的方法 α ∈ ( V T ∪ V N ) + :产生式的头或左部 , α 中至少包含 V N 中的一个元素 β ∈ ( V T ∪ V N ) ∗ :产生式的体或右部 V_T∩V_N={\emptyset}\\ V_T∪V_N:文法符号集\\ 产生式:描述了将终结符和非终结符组合成串的方法\\ α{\in}(V_T∪V_N)^+:产生式的头或左部 , α中至少包含 V_N 中的一个元素\\ β{\in}(V_T∪V_N)^*:产生式的体或右部 VT∩VN=∅VT∪VN:文法符号集产生式:描述了将终结符和非终结符组合成串的方法α∈(VT∪VN)+:产生式的头或左部,α中至少包含VN中的一个元素β∈(VT∪VN)∗:产生式的体或右部
符号约定
文法符号:字母表中排在后面的大写字母(如 X 、 Y 、 Z )表示文法符号(即终结符或非终结符)
终结符号串:字母表中排在后面的小写字母(主要是 u 、 v 、 . . . 、 z )表示终结符号串(包括空串)
文法符号串:小写希腊字母,如 α 、 β 、 γ ,表示文法符号串(包括空串)
除非特别说明,第一个产生式的左部就是开始符号
产生式的简写:
α → β 1 ∣ β 2 ∣ … ∣ β n 例: E → E + E ∣ E ∗ E ∣ ( E ) ∣ i d α{\rightarrow}β_1 |β _2 |… |β _n\\ 例:E{\rightarrow} E + E | E * E |( E ) | id α→β1∣β2∣…∣βn例:E→E+E∣E∗E∣(E)∣id
while (expression) statement
s t m t → w h i l e ( e x p r ) s t m t stmt{\rightarrow}while ( expr)stmt stmt→while(expr)stmt
for (expression 1 ; expression 2 ; expression 3
statment
s t m t → f o r ( e x p r ; e x p r ; e x p r ) s t m t stmt{\rightarrow}for ( expr ; expr; expr) stmt stmt→for(expr;expr;expr)stmt
t y p e → i n t ∣ f l o a t ∣ d o u b l e ∣ c h a r i d l i s t → i d l i s t , i d ∣ i d d e c l → t y p e , i d l i s t type{\rightarrow}int |float | double | char\\ idlist{\rightarrow}idlist , id | id\\ decl{\rightarrow}type,idlist type→int∣float∣double∣charidlist→idlist,id∣iddecl→type,idlist