2 语言及其文法
2.1 语言及其文法基本概念
**字母表:**是一个有穷符号集合,二进制字母表{0,1}、ASCII字符集和Unicode字符集都是字母表
**字母表上的运算:**字母表既然是集合,那么就可以在集合上进行运算
乘积/n次幂/正闭包/克林闭包
**串:**字母表的克林闭包中每个元素都称为字母表上的一个串
串上的运算:连接/幂运算(多个串相连接)
2.2 文法的定义
文法的形式化定义:G = (Vt,Vn,P, S)
Vt:终结符集合 是文法所定义的语言的基本符号,也称为token,比如句子的基本符号是单词,所以单词就构成了终结符集
Vn:非终结符集合,用来表示语法成分的符号,也称为语法变量,如<句子><名次短语><名词>…
Vt 和 Vn 统称为文法符号,并集即为文法符号集合
P:产生式集合 如 P = {<句子> -><名词短语><动词短语>},它是一种规则
S:开始符号,开始符号表示文法中最大的语法成分
符号约定
终结符:字母表中排在前面的小写字母,如a,b, c,运算符、标点符,粗体字符串,数字
非终结符:字母表中排在前面的大写字母,字母S,小写,斜体,代表程序构造的大写字母
字母表中排在后面的大写字母:(XYZ),表示文法符号,即终结符或者非终结符
排在后面的小写字母:uv…z等,表示终结符号串(包括空串)
2.3 语言的定义
推导和归约
A0 =>An,经过n步推导
归约式推导的逆过程
语言的形式化定义:由文法G的开始符号S推导出的所有句子构成的集合称为文法G生成的语言,记为L(G)。文法实际上解决了无穷语言的有穷表示问题
2.4 文法的分类
0型文法 :无限制文法/短语结构文法 -生成的语言称为0型语言
1型文法:上下文有关文法 -生成的语言称为上下文有关语言
2型文法:上下文无关文法
3型文法:又叫正则文法,又分为右线性文法和左线性文法 正则文法可以描述程序设计语言中的大多数单词
它们的关系是:逐级限制
2.5 CFG的分析树
根节点:文法的开始符号
内部节点 表示对一个产生式的应用
叶节点可以为终结符也可以是非终结符