slide1
Download
Skip this Video
Download Presentation
(二) 文法和形式语言

Loading in 2 Seconds...

play fullscreen
1 / 27

(二) 文法和形式语言 - PowerPoint PPT Presentation


  • 72 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' (二) 文法和形式语言' - kassidy-tierney


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

(二) 文法和形式语言

程序设计语言与形式语言

基本概念

文法

文法和语言分类

正则表达式和正则集

slide2
一、程序设计语言与形式语言

1。程序设计语言:

生成系统:文 法

识别系统:自动机

2。语法、语义、语用

语法:涉及语言的构成规律,即程序的结构

或形式

语义:语言所代表的含义。

语用:语言的实际应用

slide3
一、程序设计语言与形式语言(续)

3。形式化方法与形式化语言

形式化方法:使用一整套有严格规定的符号体系来描述问题的理论和方法。

形式化语言:一种不考虑含义的符号语言。形式化语言理论主要研究组成这种符号串的集合、它们的表示方法、结构及特性。形式化语言只涉及符号的结构方式上的规定,不涉及符号的含义。

slide4
二、基本概念

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表示字符串集合;

slide5
二、基本概念(续一)

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;

~

~

slide6
二、基本概念(续二)
  • 符号串的前缀、后缀和子串:设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= ; 注意: 

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

slide8
二、基本概念(续四)
  • 符号串集合的闭包和正闭包

集合A的闭包表示为A*(亦称为自反闭包或星闭包)具体定义为:

A*=A0 A1 A2 A3 …=Ak

正闭包表示为A+,具体定义为

A+=A1 A2 A3 …=Ak

由定义可以看到A*= A0 A+

k0

k1

slide9
二、基本概念(续五)
  • 3、语言

定义:给出字母表,则上任一字符串集合,称为上的一个语言,记为L,该语言的每一个字符串便是语言L的一个语句或句子.

eg:设 ={a,b,c}则L={a,aa,ab,aaa,aab,aba,abb,…}为上的一个语言,如果a表示字母,b表示数字,c看作其它符号,则L通常是程序语言中的标识符集.其中每个标识符便是标识符集的一个句子.

由有限个字符串组成的集合为有穷语言,反之为无穷语言.

显然L *

slide10
三、文法

1。引例

〈句子〉

〈主语〉

〈谓语〉

〈冠词〉

〈名词〉

〈动词〉

〈宾语〉

the

drove

〈冠词〉

〈名词〉

man

the

car

句子the man drove the car的结构

slide11
引例(续)

上图中用尖括号<>括起来的称为语法成分或语法类(绿色表示)。其余的称为单词符号或单词(用红色表示)

图中包括下列描述句子结构的规则:

1〈句子〉——〉〈主语〉〈谓语〉

2〈主语〉——〉〈冠词〉〈名词〉

3〈谓语〉——〉〈动词〉〈宾语〉

4〈宾语〉——〉〈冠词〉〈名词〉

5〈冠词〉——〉the

6〈名词〉——〉man

7〈名词〉——〉car

8〈动词〉——〉drove

slide12
三、文法(续一)

2。文法

定义:文法G是一个四元组,G=(VT,VN,S,P),其中

VT为终结符号集,这是个非空有限集。

VN为非终结符号集合,它也是非空有限集。

S为一文法开始符,是一个特殊的非终结符。S VN

P是产生式的非空有限集,其中每个产生式(或称规则)是一序偶(U,x)通常写作U——〉x或U::=x;

——〉( 或::= )意为“由……组成”或“产生”;

字汇表: V=(VT VN)

VT VN=

slide13
三、文法(续二)

引例中:

VN={句子,主语,谓语,宾语,冠词,动词,名词}

VT={the,man,drove,car}

S=句子

p:

1〈句子〉——〉〈主语〉〈谓语〉

2〈主语〉——〉〈冠词〉〈名词〉

3〈谓语〉——〉〈动词〉〈宾语〉

4〈宾语〉——〉〈冠词〉〈名词〉

5〈冠词〉——〉the

6〈名词〉——〉man

7〈名词〉——〉car

8〈动词〉——〉drove

slide14
三、文法(续三)

规则中如有:

P——〉a1 (P::=a1)

P——〉a2 (P::=a2)

。。。。

P——〉an (P::=an)

则相同左部合并为一个,记作

P——〉a1| a2|...| an| (P::= a1| a2|...| an|)

巴科斯范式表示法(BNF)

slide15
三、文法(续四)

3。直接推导、直接归约、推导、归约

直接推导:设有文法G=(VT,VN,S,P),, (VT VN)*,如果有A——〉P,则称A直接推导出,即: A 

其中‘’表示直接推导。

可以称A直接推导出,或者 是A的直接推导。

与推导方向相反,称直接归约到A记作:

A

slide16
三、文法(续五)

推导:

如果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

*

+

*

slide17
三、文法(续六)

规范直接推导:

设xUy xuy是一直接推导,如果U是xUy中的最右非总结符,则称这种推导为规范直接推导,并记作

xUy xuy

规范推导:

如果 xUy xuy中的每步都是规范直接推导,则称该推导为规范推导,并记为

xUy xuy

规范推导每次推导的是最右非终结符,因此规范推导也称为最右推导。

r

+

+

r

slide18
最右推导示例

文法: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

slide19
三、文法(续七)

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为等价文法。

*

*

*

slide20
四、文法和语言分类

1、0型文法与0型语言

定义:文法G中的每个规则若为::= ,  V+,  V*,则称G是0型文法,0型文法确定的语言为0型语言,表示为L0.

该文法中只要求非空,其余没有多作限制,因而亦称为无限制文法,或者称为短语文法.相应的语言称为无限制语言(或递归可枚举语言)

注:该文法的规则中,左部可以出现终结符.

slide21
四、文法和语言分类(续一)

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)。

适合描述上自然语言。

slide22
四、文法和语言分类(续二)

3、2型文法与2型语言

定义:文法G中的每个规则若为::= ,  Vn,  V*,则称G是2型文法,2型文法确定的语言为2型语言,表示为L2

在1型文法的基础上将其x,y限制为即为2型文法。可见2型文法将替换为时,对上下文无需考虑,因而该文法亦称为上下文无关文法(context free grammar—cfg), 相应的语言称为上下文无关语言(context free language——cfl)。

slide23
四、文法和语言分类(续三)

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::= 

slide24

CSL

CFL

正规

语言

文法能力

四、文法和语言分类(续四)

4、四类文法/语言的关系

CSL:上下文相关语言

CFL:上下文无关语言

slide25
四、文法和语言分类(续五)

5、语言与状态机

  • 图灵机(Turning machine——TM)识别0型语言
  • 线性状态机(Linear bounded automata ——LBA)识别1型语言。
  • 下推自动机(Push down automata——PDA)识别2型语言。
  • 有穷自动机(finite automata——FA)识别正则语言。

各类文法分别与对应的自动机在描述语言的能力上是等价的。

slide26
五、正则表达式和正则集
  • 定义:

(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)

slide27
五、正则表达式和正则集
  • 正则表达式的性质

设,,都是字母表上的正则表达式,正则表达式有如下一些性质:

(|)|= |(|)

()=  ( )

|= |

|= 

(|)= |

(| )=|

|  =

= =

(*)*=a*

a*=a|a*

ad