270 likes | 362 Views
(二) 文法和形式语言. 程序设计语言与形式语言 基本概念 文法 文法和语言分类 正则表达式和正则集. 一、程序设计语言与形式语言. 1 。 程序设计语言: 生成系统:文 法 识别系统:自动机 2 。 语法、语义、语用 语法 :涉及语言的构成规律,即程序的结构 或形式 语义 :语言所代表的含义。 语用 :语言的实际应用. 一、程序设计语言与形式语言 (续). 3 。形式化方法与形式化语言 形式化方法 : 使用一整套有严格规定的符号体系来描述问题的理论和方法。
E N D
(二) 文法和形式语言 程序设计语言与形式语言 基本概念 文法 文法和语言分类 正则表达式和正则集
一、程序设计语言与形式语言 1。程序设计语言: 生成系统:文 法 识别系统:自动机 2。语法、语义、语用 语法:涉及语言的构成规律,即程序的结构 或形式 语义:语言所代表的含义。 语用:语言的实际应用
一、程序设计语言与形式语言(续) 3。形式化方法与形式化语言 形式化方法:使用一整套有严格规定的符号体系来描述问题的理论和方法。 形式化语言:一种不考虑含义的符号语言。形式化语言理论主要研究组成这种符号串的集合、它们的表示方法、结构及特性。形式化语言只涉及符号的结构方式上的规定,不涉及符号的含义。
二、基本概念 1。字母表和符号串 • 字母表: 一个非空的有穷集合. V={0,1} • 符号: 字母表中的元素称为符号或字符 • 符号串:符号的有穷序列称为符号串. eg.字母表={a,b,c,d}则有符号串:a,b,c,d,aa,ddd,acc… 注意:表示空符号串,它表示不包含任何符号串.不是空格符.符号串中的符号是有顺序的. • 符号串集合: 字母表上若干个符号串组成的集合. A={ab,acc,da,a}; 约定:小写字母 a,b,…,r表示符号. 小写字母: s,t,…,z表示字符串; 大写字母:A,B,..,Z表示字符串集合;
二、基本概念(续一) 2.符号串的运算 • 符号串相等:符号串x,y,如果两者诸符号依次相等,则两符号相等。 • 符号串的长度:符号串中包含符号的个数。 |abc|=3;| |=0; • 符号串的连结:x,y是字母表上的两个字符串,把y的所有符号相继写在x的符号之后所得到的符号串称为x与y的连结,用xy表示。 X=abc,y=def 则xy=abcdef;yx=defabc;xy yx x=x =x; • 符号串的逆:设x是字母表上的符号串,其逆为符号串x的倒置,记为x。x=abcd;x=dcba; ~ ~
二、基本概念(续二) • 符号串的前缀、后缀和子串:设x,y,z是字母表上的符号串,则称x为符号串xy的前缀,y是符号串xy的后缀,z是符号串xzy的子串。前缀后、缀是特殊的子串。 • 符号串集合的乘积:设A、B为两个符号串集合,其乘积为AB={xy|x A,yB}; eg:A={aa,bb},B={cc,dd}则 AB={aacc,aadd,bbcc,bbdd} { }A=A { }=A; • 空集:不含任何元素的集合称为空集。记为; 对任何集合A:A = A= ; 注意:
二、基本概念(续三) • 符号串的幂:x是字母表上的符号串,则x的幂运算为: x0= ; x1= x; x2= xx;… xn= xn-1x=x xn-1 (n>0) xn表示n个x相连结。 eg:x=ok;则 x0= ; x1= ok; x2= okok; … xn=okok…ok(n个ok连结) • 符号串集合的幂: A为符号串集合,则符号串集合A的幂运算为: A0={}; A1=A; A2=AA;... An= An-1A=AAn-1;(n>0) A={aa,bb},则A0={}; A1={aa,bb}; A2=AA={aaaa,aabb,bbaa,bbbb};...
二、基本概念(续四) • 符号串集合的闭包和正闭包 集合A的闭包表示为A*(亦称为自反闭包或星闭包)具体定义为: A*=A0 A1 A2 A3 …=Ak 正闭包表示为A+,具体定义为 A+=A1 A2 A3 …=Ak 由定义可以看到A*= A0 A+ k0 k1
二、基本概念(续五) • 3、语言 定义:给出字母表,则上任一字符串集合,称为上的一个语言,记为L,该语言的每一个字符串便是语言L的一个语句或句子. eg:设 ={a,b,c}则L={a,aa,ab,aaa,aab,aba,abb,…}为上的一个语言,如果a表示字母,b表示数字,c看作其它符号,则L通常是程序语言中的标识符集.其中每个标识符便是标识符集的一个句子. 由有限个字符串组成的集合为有穷语言,反之为无穷语言. 显然L *
三、文法 1。引例 〈句子〉 〈主语〉 〈谓语〉 〈冠词〉 〈名词〉 〈动词〉 〈宾语〉 the drove 〈冠词〉 〈名词〉 man the car 句子the man drove the car的结构
引例(续) 上图中用尖括号<>括起来的称为语法成分或语法类(绿色表示)。其余的称为单词符号或单词(用红色表示) 图中包括下列描述句子结构的规则: 1〈句子〉——〉〈主语〉〈谓语〉 2〈主语〉——〉〈冠词〉〈名词〉 3〈谓语〉——〉〈动词〉〈宾语〉 4〈宾语〉——〉〈冠词〉〈名词〉 5〈冠词〉——〉the 6〈名词〉——〉man 7〈名词〉——〉car 8〈动词〉——〉drove
三、文法(续一) 2。文法 定义:文法G是一个四元组,G=(VT,VN,S,P),其中 VT为终结符号集,这是个非空有限集。 VN为非终结符号集合,它也是非空有限集。 S为一文法开始符,是一个特殊的非终结符。S VN P是产生式的非空有限集,其中每个产生式(或称规则)是一序偶(U,x)通常写作U——〉x或U::=x; ——〉( 或::= )意为“由……组成”或“产生”; 字汇表: V=(VT VN) VT VN=
三、文法(续二) 引例中: VN={句子,主语,谓语,宾语,冠词,动词,名词} VT={the,man,drove,car} S=句子 p: 1〈句子〉——〉〈主语〉〈谓语〉 2〈主语〉——〉〈冠词〉〈名词〉 3〈谓语〉——〉〈动词〉〈宾语〉 4〈宾语〉——〉〈冠词〉〈名词〉 5〈冠词〉——〉the 6〈名词〉——〉man 7〈名词〉——〉car 8〈动词〉——〉drove
三、文法(续三) 规则中如有: P——〉a1 (P::=a1) P——〉a2 (P::=a2) 。。。。 P——〉an (P::=an) 则相同左部合并为一个,记作 P——〉a1| a2|...| an| (P::= a1| a2|...| an|) 巴科斯范式表示法(BNF)
三、文法(续四) 3。直接推导、直接归约、推导、归约 直接推导:设有文法G=(VT,VN,S,P),, (VT VN)*,如果有A——〉P,则称A直接推导出,即: A 其中‘’表示直接推导。 可以称A直接推导出,或者 是A的直接推导。 与推导方向相反,称直接归约到A记作: A
三、文法(续五) 推导: 如果a1可直接推导出 a2, a2可直接推导出a3,…… an-1可直接推导出an,即存在一个自a1到an的直接推导序列 a1 a2 a3 … an-1 an(n>0) 则称a1可推导出an,记作a1 an表示从a1出发经过一步或若干步,可推导出an,这个推导长度为n-1; 如果记 a1 a1,则 a1 an表示自a1出发经过0步或若 干步可推导出an, a1 an意味着a1 = an或者a1 an (例参见P22) + 0 * + *
三、文法(续六) 规范直接推导: 设xUy xuy是一直接推导,如果U是xUy中的最右非总结符,则称这种推导为规范直接推导,并记作 xUy xuy 规范推导: 如果 xUy xuy中的每步都是规范直接推导,则称该推导为规范推导,并记为 xUy xuy 规范推导每次推导的是最右非终结符,因此规范推导也称为最右推导。 r + + r
最右推导示例 文法:G=({i,+,-,/,*,(,)},{T,E,F},E,P) P: E::=T|E+T|E-T (1) T::=F|T*F|T/F (2) F::=i|(E) (3) 给出(i+i)-i的最右推导: E E-T E-F E-i T-i F-i (E)-i (E+T)-i (E+F)-i (E+i)-i (T+i)-i (F+i)-i (i+i)-i
三、文法(续七) 4、句型、句子、语言 句型:如果有Zx,其中Z是文法的开始符,则称x为句型。 句子:如果有Zx,其中Z是文法的开始符,且x中不包含非终结符(x V*T)则称x为句子。 语言:所有句子的集合称为语言。设G是给定文法,Z是开始符,则由文法G所定义的语言L(G)可描述如下: L(G)={x| Zx, x V*T} 5、等价文法 设G1和G2是两个文法,若L(G1)=L(G2),则称G1与G2为等价文法。 * * *
四、文法和语言分类 1、0型文法与0型语言 定义:文法G中的每个规则若为::= , V+, V*,则称G是0型文法,0型文法确定的语言为0型语言,表示为L0. 该文法中只要求非空,其余没有多作限制,因而亦称为无限制文法,或者称为短语文法.相应的语言称为无限制语言(或递归可枚举语言) 注:该文法的规则中,左部可以出现终结符.
四、文法和语言分类(续一) 2、1型文法与1型语言 定义:文法G中的每个规则若为xUy::=xuy , U Vn, x,yV*,u V+,则称G是1型文法,1型文法确定的语言为1型语言,表示为L1. 令= xUy , =xuy,显然有| || | 用U替换为u时一定前有,后有 ,即非终结符U进行替换时务必考虑上下文的情况,因此称为上下文有关文法(context sensitive grammar——csg),相应的语言称为上下文相关语言(context sensitive language——csl)。 适合描述上自然语言。
四、文法和语言分类(续二) 3、2型文法与2型语言 定义:文法G中的每个规则若为::= , Vn, V*,则称G是2型文法,2型文法确定的语言为2型语言,表示为L2 在1型文法的基础上将其x,y限制为即为2型文法。可见2型文法将替换为时,对上下文无需考虑,因而该文法亦称为上下文无关文法(context free grammar—cfg), 相应的语言称为上下文无关语言(context free language——cfl)。
四、文法和语言分类(续三) 3、3型文法与3型语言 定义:文法G中的每个规则若为A::= B( A::= B )或A::= ,A,B Vn, VT,则称G是3型文法,3型文法确定的语言为3型语言,表示为L3. 3型文法又称为正则文法或正规文法(regular grammar).由正则文法确定的语言称为正则语言。 适合描述高级语言中词法相关部分。 正则文法 左线性文法: A::=B或A::= 右线性文法: A::=B或A::=
枚 举 可 语 CSL 归 言 CFL 递 正规 语言 弱 文法能力 强 四、文法和语言分类(续四) 4、四类文法/语言的关系 CSL:上下文相关语言 CFL:上下文无关语言
四、文法和语言分类(续五) 5、语言与状态机 • 图灵机(Turning machine——TM)识别0型语言 • 线性状态机(Linear bounded automata ——LBA)识别1型语言。 • 下推自动机(Push down automata——PDA)识别2型语言。 • 有穷自动机(finite automata——FA)识别正则语言。 各类文法分别与对应的自动机在描述语言的能力上是等价的。
五、正则表达式和正则集 • 定义: (1)和都是上的正则表达式,它们所表示的正则集分别为{}和 ,其中是空符号串, 是空集; (2)任意的 是正则表达式,它所表示的正则集是{}; (3)如果e1和e2是上的任意的正则表达式,且分别表示的正则集为L(e1)和L(e2),则: i) e1|e2也是正则表达式,表示的正则集为 L(e1|e2)=L(e1)UL(e2) ii) e1 e2也是表达式,表示的正则集为 L(e1e2)=L(e1)L(e2) iii) (e1)*也是正则表达式,表示的正则集为L((e1)*)=L(e1)
五、正则表达式和正则集 • 正则表达式的性质 设,,都是字母表上的正则表达式,正则表达式有如下一些性质: (|)|= |(|) ()= ( ) |= | |= (|)= | (| )=| | = = = (*)*=a* a*=a|a*