复习材料,不建议阅读
语言是句子(符号)构成的集合。
它有三个研究方面:
- 语法 —— 符号的构成、组合规律
- 语义 —— 各个符号的特定含义
- 语用 —— 各个符号出现的行为中,它们的来源、使用和影响
首先有字母表,其中的元素为符号,符号构成的有穷序列则为符号串,它包含的符号个数就是符号串的长度。当然,什么符号都没有的就是空符号串(ε)。
符号串 x,y 的连接记为 xy。例如,x=a,y=bbb,xy=abbb。
符号串与自身连接为方幂,记为 xk。例如,x=a,x3=aaa。
若集合 A 中元素都是某字母表 Σ 上的符号串,则 A 是 Σ 上的符号串集合。
若 A、B 均为 Σ 上的符号串集合,则 AB={xy∣x∈A,y∈B}。例如,设 A={ab,cd},B={ef,jh},则 AB={abef,abjh,cdef,cdjh}。
设符号串集合 A,正闭包 A+=A1+A2+...+An。例如,0+={0,00,000,...}。
较为常见的定义有非空有限的符号集:非终结符号集 VN,终结符号集 VT。
产生式是一个序偶对,也叫规则、重写规则、生成式。例如 α→β、α::=β。
语言规则的有限集合,通过规则判断句子结构是否合法。在编译原理中为四元组,表示为 G=(VN,VT,P,S),其中有:
- 非终结符号集 VN
- 终结符号集 VT
- 产生式集(规则集) P
- 开始符号(识别符) S
例如,文法 G=(VN,VT,P,S),其中 VN={S,B}, VT={0,1},P={S→0B,B→1,B→1B}。
这个文法表示:所有形如 01,011,0111,01111 的串。
也叫短语结构文法。
α→β 的 α∈VN∪VT,而且 α 里有非终结符号。
也叫上下文有关文法。
α→β 满足 ∣β∣>∣α∣(除非 β=ε)。也就是非终结符能够展开更多符号。
也叫上下文无关文法。
1 型基础上,再满足 α∈VN。也就是 A→β,左边只有一个非终结符号。
也叫正规文法或右线性文法。对应有穷自动机
2 型基础上,产生式全部形如 A→a∣A→aB,A、B∈VN,a∈VT。也就是左边一个非终结符号,右边只能最右出现非终结符号。
U→U 这样的规则为有害规则。
不可达或不可终止规则为多余规则。例如,
G[S]:S→Ab∣CdA→bD→eC→Ca
其中 D→e 多余。
限制使用 ε 规则(A→ε),会使有关文法证明变得复杂。
设 α→β 是文法 G=(VN,VT,P,S) 的产生式, γ,δ∈(VN∪VT)∗,若有符号串 v,w 满足 v=γαδ,w=γβδ,则称 w 是 v 的直接推导,或称 v 是w 的直接归约。记作 v⇒w。
简单来说直接推导就是利用一步规则。多步就是间接了。
存在直接推导序列使得 v⇒+u,那符号串 u 就是 v 的一个推导(归约)
给定文法 G=(VN,VT,P,S),对于文法 G 的任意一个句型都存在一个相应的语法树,它满足:
- 树中每一个结点都有一个标记,此标记是 V=VN∪VT 中的一个符号。
- 根的标记是 S。
- 若树的一结点 A 至少有一个子孙,则 A∈VN。
- 如结点A的子孙结点从左到右次序为 B1,B2,...,Bn,则必有产生式 A→B1,B2,...,Bn。
例如,
G[S]:S→aAS∣aA→SbA∣SS∣ba
对句型 aabbaa 的推导过程可表示为

同一语法树可以表示同一句型的不同推导,同一句型也可能产生不同的语法树。永远替换最左(右)边非终结符为最左(右)推导。同一语法树最多对应唯一的最左(右)推导。
文法中存在句子对应两颗语法树,则该文法是二义的。并不存在算法判断 2 型文法是否二义,一般用一组无二义性的充分条件构造无二义性文法。
例如,消除二义性可以引入新的非终结符、加ε规则
E→E+E∣E−E∣E∗E∣E/E∣(E)∣id
变为
E→E+T∣E−T∣TT→T∗F∣T/F∣FF→(E)∣id
由开始符号推导出来的就是句型。例如,G[S] 中 S⇒+x 的 x。
属于终结符的句型是句子。例如上例 x∈VT 那就是句子。
文法 G[S] 的所有句子构成的集合就是它的语言。
语言相同的文法等价。例如,L(G1)=L(G2) 则 G1、G2 等价。
识别一个符号串是否为某文法的一个句型。
可以自顶向下,由根(开始符号)推导;也可以自底向上,将句型串逐步归约。
S⇒∗uAv 且 A⇒+β
非终结符 A 经过至少一步推导得到 β,则 β 是句型 uβv 相对于 A 的短语。
直接短语是 A→β 一步直接推导。语法树上子树高度1。
最左直接短语是句柄。
例:已知文法 G[E]:
E→E+T∣TT→T∗F∣FF→(E)∣i
对于句型i*i+i
相对于 F 短语为 i1,i2,i3,对于规则 F→i 直接短语为 i1,i2,i3,句柄为 i1。