第二章 文法和语言
符号和符号串
- 字母表是元素的非空有穷集合
- 字母表中的元素称为符号
- 字母表中的符号可以组成的任何又穷序列称为符号串
符号串运算:
1.符号串的头尾,固有头和固有尾
\(z=xy,只对头感兴趣则可以写为z=x...\)
2.符号串的链接
$符号串x、y,连接之后为xy ;\space \epsilon x = x\epsilon = x $
3.符号串的方幂
\(设x为符号串,z=x^n ,称为符号串的方幂,即将x自身连接n次\)
4.符号串的集合
\(集合A中的一切元素都是某字母表上的符号串,则称A为该字母表上的符号串集合\)
\(俩符号串集合A,B的乘积,AB=\{x,y|x\in A且y\in B\}\)
\(\sum ^ *\)表示字母表$\sum $上所有有穷长的串的集合 $\sum ^*=\sum ^0 \cup \sum ^1 …… \cup \sum ^n $
\(\sum ^*称为集合\sum的闭包,\sum^+=\sum ^1 \cup \sum ^2…… \cup \sum ^n称为正闭包\)
各种定义
文法\(G\)定义为四元组\((V_N,V_T,P,S)\)
\(V_N\)(Non-terminators)非终结符集 \(\space V_T\)(Terminator) 终结符集
\(P\)为规则$(\alpha \rightarrow \beta) $的集合
\(\alpha \in (V_N\cup V_T)^*\) 且至少包含一个非终结符,例如 \(Aa,A,ABa\space ,\beta \in (V_N\cup V_T)^*,V_T,V_N\)和\(P\)是非空有穷集合
\(S\)坐标标识符或者开始符号,是一个非终结符号
推导的概念
- 设$\alpha \rightarrow \beta $ 是文法\(G\)五元组的规则,$\gamma $和 $\delta $ 是\(V^*\)中的任意符号,若有符号串\(v,w\)满足
则说\(v\)直接产生\(w\),或者说\(w\)是\(v\)的直接推导,或者说\(w\)直接归约到\(v\),记作\(v \Rightarrow w\)。
- 如果直接推导序列:
则称\(v\)推导出\(w\),推导长度为\(n\),记作\(v\overset{+}{\Rightarrow} w\)
句子、句型、语言定义
设\(G[S]\)是一个文法,如果符号串\(x\)是从识别符号推导出来的,即\(S\overset{*}{\Rightarrow}x\),则称\(x\)是文法\(G[S]\)的句型。
若\(x\)仅有终结符号组成,即\(S\overset{*}{\Rightarrow}x,x\in V^*_T\),称\(x\)是文法\(G[S]\)的句子。
语言:定义为集合\(\{ x|S\overset{*}{\Rightarrow}x,其中S为文法识别符号,且x\in V^*_T\}\)
文法等价
若\(L(G_1)=L(G_2),则成文法G_1和文法G_2是等价的\)
文法的类型
0型、1型、2型、3型。
0型文法概念
设\(G=(V_N,V_T,P,S)\),如果它的每一个产生式\(\alpha \rightarrow \beta\)是这样一种结构:\(\alpha \in (V_N \cup V_T)^*\)且至少包含一个非终结符,\(\beta \in (V_N \cup V_T)^*\)
0型文法相当于图灵机,任何0型语言都是递归可枚举的,泛指递归可枚举的必定是一个0型语言
1型文法概念
设\(G=(V_N,V_T,P,S)\),如果它的每一个产生式\(\alpha \rightarrow \beta\)均满足\(|\beta|\ge|\alpha|\),仅仅$S \rightarrow \epsilon $除外,则文法是1型或者上下文有关的
2型文法概念
设\(G=(V_N,V_T,P,S)\),如果它的每一个产生式\(\alpha \rightarrow \beta\)均满足:\(\alpha\)是一个非终结符,\(\beta \in (V_N \cup V_T)^*\),则文法是2型或者上下文无关的
3型文法概念
设\(G=(V_N,V_T,P,S)\),如果P中每一个产生式的形式都是\(A\rightarrow aB\)或\(A\rightarrow a\),其中\(A,B\)都是非终结符,\(a\in V_T^*\),则是3型或正规文法
上下文无关文法和语法树
上下文无关文法最直观的表达方式是语法树
如果推导的任何一步\(\alpha \Rightarrow \beta\),其中\(\alpha 、\beta\)是句型,都是对\(\alpha\)中的最左(最右)非终结符进行替换,则称这种推到为最左(最右)推导。
最右推导一般称之为规范推导。
文法的二义性和语言的二义性是两个不同的概念。
如果一个文法存在的某个句子,有两个不同的最左(最右推导),则说这文法是二义的。或者某个句子对应两棵不同的语法树。
句型的分析
- 令G是一个文法,S是文法的开始符号,\(\alpha \beta \delta\)是文法G的一个句型。如果有\(S\overset{*}{\Rightarrow} {\alpha A\delta }\)且\(A \overset{+}{\Rightarrow} \beta\),则称\(\beta\)是句型$\alpha \beta \delta $相对于非终结符A的短语
- 如果\(A \Rightarrow \beta\),则称\(\beta\)是句型\(\alpha \beta \delta\)相对于规则\(A\rightarrow \beta\)的直接短语,也叫简单短语。
- 一个右句型的直接短语称为该句型的句柄。
- 如果文法无二义,右句型有唯一的最右推导,句柄唯一,是所有直接短语中最左边的那一个
- 如果文法是二义的,则有多个句柄。
标签:文法,sum,清华大学,编译,beta,alpha,第二章,符号串,Rightarrow From: https://www.cnblogs.com/graffiticode/p/18129320