文档详情

编译原理第三章.ppt

发布:2025-04-11约8.58千字共65页下载文档
文本预览下载声明

第3章文法和语言;语法

所谓一个语言的语法是指一组规那么,用它可以形成和产生一个适宜的程序。

目前广泛使用的是上下文无关文法,即用上下文无关文法作为程序设计语言语法的描述工具。

程序设计语言的描述

语法:程序的结构或形式

语义:语言所代表的含义

语用:语言的实际应用;例如,对于赋值语句x:=x+y*z的非形式描述为:

语法:赋值语句=变量+:=+表达式

语义:先求右部,然后把结果给左部变量

语用:赋值语句可用来计算和保存表达式的值

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

形式语言:一种不考虑含义的符号语言。;;例如,有一组规那么:

句子::=主语谓语

主语::=冠词形容词名词

谓语::=动词直接宾语

直接宾语::=冠词名词

冠词::=the

冠词::=a

形容词::=small

动词::=ate

名词::=cat

名词::=mouse

显然,由这一组规那么可以产生句子:

Thesmallcat/mouseateamouse/cat;使用文法作为工具,不仅为了严格地定义句子的结构,也是为了适当条数的规那么把语言的全部句子描述出来,可以说文法是以有穷的集合刻画无穷的集合的一个工具。

有穷的〔规那么〕集合;

无穷的〔句子/程序〕集合;语言

可以看成在一个根本符号集上定义的,按一定规那么构成的一切根本符号串组成的集合。

字母表〔符号集Σ〕

是一个非空有穷集合。

符号〔字符〕

字母表中的元素。

符号串

符号的有穷序列。

注意:?表示空符号串,表示什么符号也不含的符号串。;符号串的前缀(头)、后缀(尾)、固有头、固有尾

设x、y、z是字母表?上的符号串,那么称x为符号串xy的前缀〔头〕,y是符号串xy的后缀〔尾〕;

?、x、xy、xyz是符号串xyz的前缀〔头〕,?、x、xy是符号串xyz的固有前缀〔头〕;

?、z、yz、xyz是符号串xyz的后缀〔尾〕,?、z、yz是符号串xyz的固有后缀〔尾〕。;符号串集合

字母表上假设干个符号串组成的集合。

空集:不含任何元素的集合,记为?。

注意:(1).?A=A?=?;(2).???

例:Σ={a,b,c,d,……z}。

a、b、c……都称为符号。

hello、stri、aezfg、main都是Σ上的符号串。

{hello、stri、aezfg}称为符号串集合。;符号串和符号串集合的运算;符号串的连结

设x与y是字母表∑上的两个符号串,把y的所有符号相继写在x的符号之后所得到的符号串称为x与y的连结,用xy表示。注意:

|xy|=|x|+|y|

x=?x=x?

xy≠yx(一般情况);符号串的逆

设x是字母表?上的符号串,其逆为符号串x的倒置,记为。

假设x=abcd,那么=dcba.

=??

符号串的方幂

设x是符号串,x自身的连接称为符号串的方幂,有:

例:x=ba,=ε,=ba,=bababa;符号串集合的乘积

假设A、B均为Σ上的符号串集合,那么:

AB={xy|x∈A,y∈B}

例:设A={ab,cd},B={ef,jh},那么:

AB={abef,abjh,cdef,cdjh}

A{ε}=A,φA=Aφ=φ;符号串集合的幂

设A是符号串集合,那么符号串A的幂运算为:

A0={?}

A1=A

A2=AA

??????

An=An-1A=AAn-1)

例:假设A={ab,cd},那么:

A0={?},A1={ab,cd},A2={abab,abcd,cdab,

cdcd},??????;符号串集合的正闭包

设符号串集合A,A的正闭包记为A+那么:

符号串集合的闭包

设符号串集合A,A的闭包记为A*,那么:

例:设Σ={0,1},那么:

={0,1,00,01,10,11,000,001……}。

={ε,0,1,00,0

显示全部
相似文档