1 / 27

(二) 文法和形式语言

(二) 文法和形式语言. 程序设计语言与形式语言 基本概念 文法 文法和语言分类 正则表达式和正则集. 一、程序设计语言与形式语言. 1 。 程序设计语言: 生成系统:文 法 识别系统:自动机 2 。 语法、语义、语用 语法 :涉及语言的构成规律,即程序的结构 或形式 语义 :语言所代表的含义。 语用 :语言的实际应用. 一、程序设计语言与形式语言 (续). 3 。形式化方法与形式化语言 形式化方法 : 使用一整套有严格规定的符号体系来描述问题的理论和方法。

Download Presentation

(二) 文法和形式语言

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. (二) 文法和形式语言 程序设计语言与形式语言 基本概念 文法 文法和语言分类 正则表达式和正则集

  2. 一、程序设计语言与形式语言 1。程序设计语言: 生成系统:文 法 识别系统:自动机 2。语法、语义、语用 语法:涉及语言的构成规律,即程序的结构 或形式 语义:语言所代表的含义。 语用:语言的实际应用

  3. 一、程序设计语言与形式语言(续) 3。形式化方法与形式化语言 形式化方法:使用一整套有严格规定的符号体系来描述问题的理论和方法。 形式化语言:一种不考虑含义的符号语言。形式化语言理论主要研究组成这种符号串的集合、它们的表示方法、结构及特性。形式化语言只涉及符号的结构方式上的规定,不涉及符号的含义。

  4. 二、基本概念 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表示字符串集合;

  5. 二、基本概念(续一) 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; ~ ~

  6. 二、基本概念(续二) • 符号串的前缀、后缀和子串:设x,y,z是字母表上的符号串,则称x为符号串xy的前缀,y是符号串xy的后缀,z是符号串xzy的子串。前缀后、缀是特殊的子串。 • 符号串集合的乘积:设A、B为两个符号串集合,其乘积为AB={xy|x A,yB}; eg:A={aa,bb},B={cc,dd}则 AB={aacc,aadd,bbcc,bbdd} { }A=A { }=A; • 空集:不含任何元素的集合称为空集。记为; 对任何集合A:A = A= ; 注意: 

  7. 二、基本概念(续三) • 符号串的幂: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};...

  8. 二、基本概念(续四) • 符号串集合的闭包和正闭包 集合A的闭包表示为A*(亦称为自反闭包或星闭包)具体定义为: A*=A0 A1 A2 A3 …=Ak 正闭包表示为A+,具体定义为 A+=A1 A2 A3 …=Ak 由定义可以看到A*= A0 A+ k0 k1

  9. 二、基本概念(续五) • 3、语言 定义:给出字母表,则上任一字符串集合,称为上的一个语言,记为L,该语言的每一个字符串便是语言L的一个语句或句子. eg:设 ={a,b,c}则L={a,aa,ab,aaa,aab,aba,abb,…}为上的一个语言,如果a表示字母,b表示数字,c看作其它符号,则L通常是程序语言中的标识符集.其中每个标识符便是标识符集的一个句子. 由有限个字符串组成的集合为有穷语言,反之为无穷语言. 显然L *

  10. 三、文法 1。引例 〈句子〉 〈主语〉 〈谓语〉 〈冠词〉 〈名词〉 〈动词〉 〈宾语〉 the drove 〈冠词〉 〈名词〉 man the car 句子the man drove the car的结构

  11. 引例(续) 上图中用尖括号<>括起来的称为语法成分或语法类(绿色表示)。其余的称为单词符号或单词(用红色表示) 图中包括下列描述句子结构的规则: 1〈句子〉——〉〈主语〉〈谓语〉 2〈主语〉——〉〈冠词〉〈名词〉 3〈谓语〉——〉〈动词〉〈宾语〉 4〈宾语〉——〉〈冠词〉〈名词〉 5〈冠词〉——〉the 6〈名词〉——〉man 7〈名词〉——〉car 8〈动词〉——〉drove

  12. 三、文法(续一) 2。文法 定义:文法G是一个四元组,G=(VT,VN,S,P),其中 VT为终结符号集,这是个非空有限集。 VN为非终结符号集合,它也是非空有限集。 S为一文法开始符,是一个特殊的非终结符。S VN P是产生式的非空有限集,其中每个产生式(或称规则)是一序偶(U,x)通常写作U——〉x或U::=x; ——〉( 或::= )意为“由……组成”或“产生”; 字汇表: V=(VT VN) VT VN=

  13. 三、文法(续二) 引例中: VN={句子,主语,谓语,宾语,冠词,动词,名词} VT={the,man,drove,car} S=句子 p: 1〈句子〉——〉〈主语〉〈谓语〉 2〈主语〉——〉〈冠词〉〈名词〉 3〈谓语〉——〉〈动词〉〈宾语〉 4〈宾语〉——〉〈冠词〉〈名词〉 5〈冠词〉——〉the 6〈名词〉——〉man 7〈名词〉——〉car 8〈动词〉——〉drove

  14. 三、文法(续三) 规则中如有: P——〉a1 (P::=a1) P——〉a2 (P::=a2) 。。。。 P——〉an (P::=an) 则相同左部合并为一个,记作 P——〉a1| a2|...| an| (P::= a1| a2|...| an|) 巴科斯范式表示法(BNF)

  15. 三、文法(续四) 3。直接推导、直接归约、推导、归约 直接推导:设有文法G=(VT,VN,S,P),, (VT VN)*,如果有A——〉P,则称A直接推导出,即: A  其中‘’表示直接推导。 可以称A直接推导出,或者 是A的直接推导。 与推导方向相反,称直接归约到A记作: A 

  16. 三、文法(续五) 推导: 如果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 * + *

  17. 三、文法(续六) 规范直接推导: 设xUy xuy是一直接推导,如果U是xUy中的最右非总结符,则称这种推导为规范直接推导,并记作 xUy xuy 规范推导: 如果 xUy xuy中的每步都是规范直接推导,则称该推导为规范推导,并记为 xUy xuy 规范推导每次推导的是最右非终结符,因此规范推导也称为最右推导。 r + + r

  18. 最右推导示例 文法: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

  19. 三、文法(续七) 4、句型、句子、语言 句型:如果有Zx,其中Z是文法的开始符,则称x为句型。 句子:如果有Zx,其中Z是文法的开始符,且x中不包含非终结符(x V*T)则称x为句子。 语言:所有句子的集合称为语言。设G是给定文法,Z是开始符,则由文法G所定义的语言L(G)可描述如下: L(G)={x| Zx, x V*T} 5、等价文法 设G1和G2是两个文法,若L(G1)=L(G2),则称G1与G2为等价文法。 * * *

  20. 四、文法和语言分类 1、0型文法与0型语言 定义:文法G中的每个规则若为::= ,  V+,  V*,则称G是0型文法,0型文法确定的语言为0型语言,表示为L0. 该文法中只要求非空,其余没有多作限制,因而亦称为无限制文法,或者称为短语文法.相应的语言称为无限制语言(或递归可枚举语言) 注:该文法的规则中,左部可以出现终结符.

  21. 四、文法和语言分类(续一) 2、1型文法与1型语言 定义:文法G中的每个规则若为xUy::=xuy , U Vn, x,yV*,u V+,则称G是1型文法,1型文法确定的语言为1型语言,表示为L1. 令= xUy , =xuy,显然有|  ||  | 用U替换为u时一定前有,后有 ,即非终结符U进行替换时务必考虑上下文的情况,因此称为上下文有关文法(context sensitive grammar——csg),相应的语言称为上下文相关语言(context sensitive language——csl)。 适合描述上自然语言。

  22. 四、文法和语言分类(续二) 3、2型文法与2型语言 定义:文法G中的每个规则若为::= ,  Vn,  V*,则称G是2型文法,2型文法确定的语言为2型语言,表示为L2 在1型文法的基础上将其x,y限制为即为2型文法。可见2型文法将替换为时,对上下文无需考虑,因而该文法亦称为上下文无关文法(context free grammar—cfg), 相应的语言称为上下文无关语言(context free language——cfl)。

  23. 四、文法和语言分类(续三) 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::= 

  24. 举 可 语 CSL 归 言 CFL 递 正规 语言 弱 文法能力 强 四、文法和语言分类(续四) 4、四类文法/语言的关系 CSL:上下文相关语言 CFL:上下文无关语言

  25. 四、文法和语言分类(续五) 5、语言与状态机 • 图灵机(Turning machine——TM)识别0型语言 • 线性状态机(Linear bounded automata ——LBA)识别1型语言。 • 下推自动机(Push down automata——PDA)识别2型语言。 • 有穷自动机(finite automata——FA)识别正则语言。 各类文法分别与对应的自动机在描述语言的能力上是等价的。

  26. 五、正则表达式和正则集 • 定义: (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)

  27. 五、正则表达式和正则集 • 正则表达式的性质 设,,都是字母表上的正则表达式,正则表达式有如下一些性质: (|)|= |(|) ()=  ( ) |= | |=  (|)= | (| )=| |  = = = (*)*=a* a*=a|a*

More Related