第2章 形式语言基础
2.1 形式语言是符号串集合
字母表中的元素不能再切割
b0=ε(空符号串),b1=b,b2=bb,b3=bbb,…
L1为有限语言,L2为无限语言(字符串无限多个)
符号串的运算:
- 连接:a·b=ab
- 或:a|b=a(或者b)
- 方幂:b0=ε(空符号串),b1=b,b2=bb,b3=bbb,…
- 闭包:a的正闭包:a+=a1|a2|…|an|…
a的星闭包:a*=a0|a1|a2|…|an|…
例:(a|b)2=aa|ab|ba|bb
推论:若A为任一字母表,则A*就是该字母表上所有符号串(包括空串)的集合。
文法规则:
- S,A—定义的对象(S句子,最大的定义对象,又称为开始符号;A为aAc的短语)
- a,b,c—字母表中的符号
- ->,| —为描述符号
可以用文法生成语言(连续推导)
2.2 形式语言是由文法定义的
文法:规则的有限集,其中的上下文无关文法可定义为四元组
四元组
四元组:G(Z) = (VN , VT , Z , P)
VN :非终结符集(定义的对象集,如:变量)
VT :终结符集(字母表)
Z:开始符号(研究范畴中,最大的定义对象)
P:规则集(又称产生式集)
一个文法所定义的语言,就是由该文法开始符号推导出的所有仅含终结符的符号串之集合。
标识符:指字母开头的字母、数字序列
2.3 主要语法成分的定义
推导,规约,语法树,句柄
文法的两种基本运算:推导,规约
- 直接推导=>,一次推导
加推导(=>上加+),至少一次推导
星推导(=>上加*),0或0步以上步推导 - 直接规约(=>下加.)
加规约(=>下加.上加+)
星规约(=>下加.上加*)
实用中最常见的两种运算:最左推导,最左规约
最左推导:每次推导皆最左非终结符优先
最左规约:每次规约皆最左非终结符优先
- 句型:由文法开始符号加推导出的任一符号串
- 句子:由开始符号加推导出的任一终结符号串
- 语法树:句型(句子)产生过程的一种树结构表示
关于语法树:
- 树根—开始符号;树叶—给定的句型(句子)
- 其全体树叶(自左至右)恰好是给定句型
- 子树:以任何具有分支的结点为根所形成的树
- 简单子树:仅具有单层分支的子树
短语:任一子树的树叶全体(具有共同祖先的叶节点符号串)
简单短语:任一简单子树的树叶全体
句柄:最左边的简单短语
2.4 两种特性文法
递归文法
定义:设A∈VN,x,y∈(VN+VT)*,则若A=>xAy,称文法具有递归性
递归文法是定义无限语言的文法
特别:若A->Aa,称文法具有直接左递归性
若A->aA,称文法具有直接右递归性
二义性文法
定义:文法中存在具有两棵不同语法树的句型
二义性文法会引起歧义,应尽量避免
2.5 文法的等价变换*
文法的等价性:它们所定义的语言是一样的
注:一个语言,其描述文法并不唯一
重点介绍三种文法变换:
- 删除无用的产生式(文法的化简)
- 删除ε产生式
- 常用的三种文法变换
Ⅰ. 文法的化简
- 删除A->A形式的产生式(自定己)
- 删除不能从其推导出终结符串的产生式(不终结)(先找终结产生式)
- 删除在推导中永不使用的产生式(不可用)(起始不能到非终结符构成的表达式)
2⃣️删除ε产生式
- 首先构造出可以推出空串的非终结符集
- 删除文法中的A->ε产生式
- 依次改写文法中的产生式A->X1X2…Xn:若有Xi∈Vε,则用(Xi|ε)替换(一个分裂为两个)
3⃣️常用的三种文法变换方法(扩展文法,引入新的描述符号)
- 必选项法(圆括号法):令(a|b) = a或者b(又称提取公因式法)
- 可选项法[方括号法]:令[a] = a或者ε(括号内可选也可不选)
- 重复可选项法{花括号法}:令{a} = ε或a或aa或aaa…(消除直接左递归)
2.6 形式语言的分类
- 0型语言(无限制文法)a->b
- 1型语言(上下文有关文法)xAy->xby
- 2型语言(上下文无关文法)A->b
- 3型语言(正规文法)A->aB, A->a, A->ε
本文介绍了形式语言的基础概念,包括字母表、符号串、语言的分类和运算。此外,详细讲解了文法的定义,如四元组、推导、规约、语法树和句柄,并探讨了递归文法和二义性文法的特点。还讨论了文法的等价变换,如删除无用和ε产生式,以及如何通过文法变换消除直接左递归。

1380

被折叠的 条评论
为什么被折叠?



