I . 语法组成
上下文无关语法 组成 : 由 {V,Σ,R,S} 四部分组成 ;
变量集 V : 有限的变量集合 ;
终端字符集 Σ : 有限的终端字符组成的集合 ; 相当于常量的含义 , 与变量相对 ;
规则集 R : 有限的规则组成的集合 , 规则规定如何进行代换操作 , 规定 变量 , 终端字符 , 字符串变量 等 ;
开始变量 S : 该变量作为开始变量 ;
II . 规则
规则 简介 :
① 已知条件 : 假设 u,v,w 是 变量 ( 变元 ) 或 终端字符集 ( 常量 / 常元 ) ;
② 规则描述 : 规则是一个箭头 , A→w , A 是变元 , w 是 变元 和 常元 组成的终端字符 ;
③ 规则用法 : 在字符串中 , 根据 A→w 规则进行替换 , 只需要将 A 变元替换成 w 字符串即可 ;
④ 规则示例 : uAv 中使用上述规则进行替换 , 将 A 替换成 w , 替换结果是得到新字符串 uwv ;
uAv⇒uwv
III . 语法
1 . 有限次规则替换 : u⇒∗v 表示有限多次替换后 , 每一步替换的临时结果序列组成集合 {u1,u2,⋯,uk} , 最终结果是 终端字符 ;
2 . 有限次规则替换 步骤 :
-
u 根据某规则进行替换得到 u1 ;
-
u1 根据某规则进行替换得到 u2 ;
- ⋮
-
uk 根据某规则进行替换得到 v ;
3 . 最终规则替换结果要求 : v 中不包含变元 , 全部由 终端字符 ( 常元 ) 组成的 字符串 ;
v 是由 u 生成的 ;
4 . 语法定义 : 从开始变元 , 使用规则逐步替换 , 替换到最后 , 将所有 终端字符组成字符串 放在一个集合中 , 称为语法生成的语言 ;
L(G)={w∈Σ∗:S⇒∗w}
IV . 语法示例
1 . 语法组成部分 : G3=({S},{a,b},R,S) 其组成如下 :
2 . 规则 R 描述 :
S→aSb∣SS∣ε
- S 变量 可以使用 aSb 字符串替换 ;
- S 变量 可以使用 SS 字符串替换 ;
- S 变量 可以使用 ε 字符串替换 ;
3 . 规则替换过程 :
① S 是开始变量 , 可以使用 aSb 替换 :
S⇒aSb
② 使用 aSb 替换 S :
S⇒aSb⇒aaSbb
③ 使用 SS 替换 S :
S⇒aSb⇒aaSbb⇒aaSSbb
④ 使用 aSb 替换第一个 S :
S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb
⑤ 使用 ε 替换第一个 S :
S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb
⑥ 使用 aSb 替换 S :
S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb⇒aaabaSbbb
⑦ 使用 ε 替换 S :
S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb⇒aaabaSbbb⇒aaababbb
最终得到 aaababbb 字符串 , 该字符串全部由终端字符构成 , 是从 S 开始状态出发 , 按照 R 规则替换得来的 ;
称该字符串由 语法 G3 生成的 ;
V . 语法简写形式
语法可以使用下面的形式简单表示 , 没有必要使用繁琐的形式 , 可以使用约定的简写形式 ;
约定写法 :
- A→0A1
- A→B
- B→l
开始状态约定 : 左上方的变元 A 约定是 开始变元 ;
变元约定 : 大写字母 A,B 约定为 变元 ;
终端字符约定 : 小写字母 约定为 终端字符 ;
VI . 语法分析树
语法分析树 : 字符串生成的过程 , 可以写成语法分析树 ;
将上述 简写的 约定语法描述 , 生成 终端字符构成的字符串 ;
1 . 开始状态 : A , 使用 0A1 替换 A ;
A⇒0A1
当前语法分析树 :

2 . 使用 0A1 替换 A ;
A⇒0A1⇒00A11
当前语法分析树 :

3 . 使用 0A1 替换 A ;
A⇒0A1⇒00A11⇒000A111
当前语法分析树 :

4 . 使用 B 替换 A ;
A⇒0A1⇒00A11⇒000A111⇒000B111
当前语法分析树 :

5 . 使用 l 替换 B ;
A⇒0A1⇒00A11⇒000A111⇒000B111⇒000l111
当前语法分析树 :

6 . 最终得到的字符串为 000l111 ;
VII . 代数表达式 语法
1 . 代数表达式 语法 : G4=(V,A,R,Expression) 是代数表达式语法 ;
① 终端字符集 : A={a,+,×,()} ;
② 变量集 : V={Expression,Term,Factor} ;
-
Expression 是表达式 ;
-
Term 是项 ;
-
Factor 是因子 ;
2 . Expression 表达式 规则 :
Expression→Expression+Term∣Term
Expression ( 表达式 ) 可以通过 Expression+Term∣Term 代替 ;
3 . Term 项 规则 :
Term→Term×Factor∣Factor
Term 项 可以通过 Term×Factor∣Factor 代替 ;
4 . Factor 因子 规则 :
Factor→Expression∣a
Factor 因子 可以通过 Expression∣a 代替 ;