编译原理(清华大学版)第二章

第二章 文法和语言

符号和符号串

  • 字母表是元素的非空有穷集合
  • 字母表中的元素称为符号
  • 字母表中的符号可以组成的任何有穷序列称为符号串

符号串运算

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\)(Principle)为规则$(\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=\gamma \alpha \delta,\space w=\gamma \beta \delta \]

​ 则说\(v\)直接产生\(w\),或者说\(w\)\(v\)直接推导,或者说\(w\)直接归约\(v\),记作\(v \Rightarrow w\)

  • 如果直接推导序列:

\[v = w_0\Rightarrow w_1 \Rightarrow w_2 \Rightarrow ...\Rightarrow w_n = w (n>0) \]

​ 则称\(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)组成

文法等价

\(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\)直接短语,也叫简单短语
  • 一个右句型的直接短语称为该句型的句柄
    • 如果文法无二义,右句型有唯一的最右推导,句柄唯一,是所有直接短语中最左边的那一个
    • 如果文法是二义的,则有多个句柄。
posted @ 2024-04-11 15:18  Graffiti404  阅读(30)  评论(0编辑  收藏  举报