文法:起描述作用的元语言,元语言是判断句子结构是否符合规范的依据
语言:
1. 语义(Semantics):单个元素的含义
2. 语法(Syntax):各个元素之间的组合规律
3. 语用(Pragmatics):语句和使用者之间的关系
形式语言:不考虑语用,语句只以符号串能表现出来的形式来描述
语言:基本的符号串
符号:可以相互区别的元素
字母表:符号的非空有穷集合
字符串:由符号组成任何有穷序列
空字符串:ε
符号串的连接:XY是把Y字符串写在X字符串的后面
符号串的方幂:符号串自身连接n次得到的符号串
符号串的乘积:若AB={xy|x∈A且y∈B},xy是所有的字符串的集合
∑*:闭包,∑里面所有字符串所组成的集合
∑+:正闭包,∑*里面去除ε剩下的符号串所组成的集合
运算符优先级 *>连接>|
{ε}是一个语言
描述语言:
1. 有穷
将句子逐一表示
2. 无穷
找出句子的有穷表示方法
①文法
②自动机
句型:有文法G,若S=>*x,则x是文法G的句型
句子:有文法G,若S=>*x,且x∈VT*,则x是文法G的句子
文法
G=(VN,VT,P,S)
VN:非终结符号,不是最小单元的符号。用大写字母表示。
VT: 终结符号,元素,最小单元。用小写字母表示。
P:产生式
S:开始符号
直接推导:若v直接产生w,则v直接推到出w
L(G):由文法G的一切句子的集合
最左(最右)推导:在推导的任何一步α=>β,其中α和β是句型,都是对α中的最左(右)非终结符进行替换
规范推导:最右推导。推导出来的句型称为规范句型
文法 | 描述 | 定义(α→β) | 例子(文法G[S]) |
0型 | 可以表征任何递归可枚举集, 而且任何0型语言都是递归可枚举的 | α∈(VN∪VT)*,且至少要包含一个非终结符。 β属于(VN∪VT)*
|
|
1型 | 上下文有关文法 (CSG),产生式形式为α1Aα2→α1βα2。 识别系统是线性界限自动机 | |β|≥|α|,仅仅S→ε除外 | S→CD C→aCA C→bCB AD→aD BD→bD Aa→bD Ab→bA Ba→bB C→ε |
2型 | 上下文无关文法 (CFG),产生式形式为A→β。 其识别系统是不确定的下推自动机 | Α∈VN,β∈(VN∪VT)* | S→AB A→BS|0 B→SA|1 |
3型 | 正则文法(RG)。有穷自动机。分为左线性 文法和右线性文法
| 产生式形式都为A→aB或者A→a,其中A∈VN, B属于VN,a属于 VT | S→0A|1B|0 A→0A|1B|0S B→1B|1|0 |
语法树
设G=(VN,VT,P,S)为一CFG,若一棵树满足下列4个条件,则此树称作G的语法树:
1. 每个结点都有一个标记,此标记是V的一个符号
2. 根的标记是S
3. 若一结点n至少有一个它自己除外的子孙,并且有标记A,则肯定A∈VN
4. 如果结点n有标记A,其直接子孙结点从左到右的次序是n1,n2,……,nk,其标记分别为A1,A2,A3……,Ak,那么A→A1A2,……Ak一定是P中的一个产生式
从左到右读出推导树的叶子标记连接成的文法符号串aabbaa,为G[S]的句型。
文法二义性:若一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。将二义文法改造为无二义文法只需要规定优先顺序和结合律。
(二义文法) (无二义文法)
句型分析:识别某一个符号串是否符合某一文法的标准,分为至上而下法和至下而上法