文法的定义
# 文法
课件
# 定义
文法的定义
# 终结符集合
; 终结符集合 - 终结符(terminal symbol)是文法所定义的语言的基本符号,有时也称为
token
- 例:
# 非终结符集合
:非终结符集合 - 非终结符(nonterminal) 是用来表示语法成分的符号,有时也称为“语法变量”
- 例:
非终结符和终结符统称为文法符号
# 产生式
- 产生式(production)描述了将终结符和非终结符组合成串的方法
产生式的一般形式
读作
定义为 且 中至少包含 中的一个元素:称为产生式的头(head)或左部(left side) : 称为产生式的体(body)或右部(right side)
# 产生式集合
产生式集合 - 例:
- 例:
# 开始符号
- 开始符号
,开始符号(start symbol)表示的是该文法中最大的语法成分 - 例:
句 子
加法和乘法的文法
约定:不引起歧义的前提下,可以只写产生式
# 产生式的简写
对一组有相同左部的
产生式可以简记为:
读作:
定义为 ,或者 称为 的候选式(Candidate)
示例
- 可以简写为:
# 符号约定
- 下述符号是终结符
- 字母表中排在前面的小写字母,如
、 、 - 运算符,如
等、 - 标点符号,如括号、逗号等
- 数字
、 、 、 - 粗体字符串,如 id、if 等
- 字母表中排在前面的小写字母,如
- 下述符号是非终结符
- 字母表中排在前面的大写字母,如
、 、 - 字母
。通常表示开始符号 - 小写、斜体的名字,如 expr、stmt 等
- 代表程序构造的大写字母。如
(表达式)、 (项)和 (因子)
- 字母表中排在前面的大写字母,如
- 字母表中排在后面的大写字母(如
)表示文法符号(即终结符或非终结符)、 、 - 字母表中排在后面的小写字母(主要是
)表示终结符号串(包括空串)、 、 、 - 小写希腊字母,如
,表示文法符号串(包括空串)、 、 - 除非特别说明,第一个产生式的左部就是开始符号
编辑 (opens new window)