句子的构成
![1.png](https://i-blog.csdnimg.cn/blog_migrate/67660f228cbef7578596c28b148fb2f0.png)
- 尖括号‘ <> ’括起来部分称为语法成分
- 未用尖括号括起来的部分表示语言的基本符号
文法的形式化定义
G = ( VT , VN, P , S )
VT:终结符集合
终结符是文法所定义的语言的基本符号,有时也成为token
例:VT = {apple,boy,eat,little}
VN:非终结符集合
非终结符用来表示语法成分的符号有时也称为“语法变量”
例:VN={<句子>,<名词短语>,<名词>,<动词短语>,...}
V<sub>N</sub>∩V<sub>T</sub> =φ
V<sub>N</sub>∪V<sub>T</sub>:文法符号集
P:产生式集合
产生式描述了将终结符和非终结符组合成串的方法
产生式的一般形式:
α->β
读作α定义为β
- α∈(VT∪VN)+,且α至少包含VN中的一个元素,称为产生式的头部或左部
- β∈(VT∪VN)*称为产生式的体或者右部
S:开始符号
S∈VN ,开始符号表示的是该文法中最大的语法成分
例:S =<句子>
![3.png](https://i-blog.csdnimg.cn/blog_migrate/43aa8e31e5805484d5694e3a9ed28a36.png)
产生式的简写
![4.png](https://i-blog.csdnimg.cn/blog_migrate/2eb5789d44d38c57651eb078f38bb52a.png)
例:
E -> E + E
E -> E * E
E -> (E)
E -> id
以上可简写成: E -> E + E | E * E | (E) | id
符号约定
- 终结符
- 非终结符
- 字母表中排在后面的大写字母(X,Y,Z,...)表示文法符号(即终结符或非终结符)
- 字母表中排在后面的小写字母(u,v,w,x,y,...)表示终结符符号串(包括空串)
- 小写希腊字母,表示文法符号串(包括空串)
- 除非特别说明,第一个产生式的左部就是开始符号