资源描述:
《chapter2文法和语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、文法和语言教学目的:使学生了解文法基本概念、文法类型,掌握文法和语言的形式定义,学会用语法树进行句型分析。教学重点:文法和语言的形式定义,句型分析。本章知识点(内容)文法的直观概念符号和符号串文法和语言的形式定义文法的类型上下文无关文法及其语法树句型的分析有关文法实用中的一些说明1、语言:是由句子组成的集合,是由一组符号所构成的集合。2、汉语:所有符合汉语语法的句子的全体。3、英语:所有符合英语语法的句子的全体。4、程序设计语言:所有该语言的程序的全体。每个句子构成的规律研究语言每个句子的含义每个句子和使用者的关系文法的直观概念当我们表述一种语言
2、时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需列出句子的有穷集就行了,但对于含有无穷句子的语言来讲,存在着如何给出它的有穷表示的问题。以自然语言为例,人们无法列出全部句子,但是人们可以给出一些规则,用这些规则来说明(或者定义)句子的组成结构,比如汉语句子可以是由主语后随谓语而成,构成谓语的是动词和直接宾语,我们采用EBNF来表示这种句子的构成规则。巴科斯范式:巴科斯范式(BNF:Backus-NaurForm的缩写)是由JohnBackus和PeterNaur首先引入的用来描述计算机语言语法的符号集。现在,几乎每一位新编程语言书
3、籍的作者都使用巴科斯范式来定义编程语言的语法规则。EBNF(扩充BNF)描述符EBNF描述符相应的BNF描述符含义=::=定义为;推导为
4、
5、或{}无含0次在内任意多次重复[]无含0次和1次()无括号内看作一项.无一条生成规则的结束“我是大学生”是汉语的一个句子〈句子〉∷=〈主语〉〈谓语〉〈主语〉∷=〈代词〉|〈名词〉〈代词〉∷=我|你|他〈名词〉∷=王明|大学生|工人|英语〈谓语〉∷=〈动词〉〈直接宾语〉〈动词〉∷=是|学习〈直接宾语〉∷=〈代词〉|〈名词〉有了一组规则以后,按照如下方式用它们导出句子:开始去找∷=左端的带有〈句子〉的规则并把它由
6、∷=右端的符号串代替,这个动作表示成:〈句子〉〈主语〉〈谓语〉,然后在得到的串〈主语〉〈谓语〉中,选取〈主语〉或〈谓语〉,再用相应规则的∷=右端代替之。比如,选取了〈主语〉,并采用规则〈主语〉∷=〈代词〉,那么得到:〈主语〉〈谓语〉〈代词〉〈谓语〉,重复做下去,句子:“我是大学生”的全部动作过程是:〈句子〉〈主语〉〈谓语〉〈代词〉〈谓语〉我〈谓语〉我〈动词〉〈直接宾语〉我是〈直接宾语〉我是〈名词〉我是大学生“我是大学生”的构成符合上述规则,而“我大学生是”不符合上述规则,我们说它不是句子,这些规则就是我们判别句子结构合法
7、与否的依据,可以将这些规则看成是一种元语言,用它描述汉语。文法:就是这样一些规则的有穷集合,它是以有穷规则集来刻划无穷句子集合的工具。字母表:元素的非空有穷集,记为Σ,语言的字母表是由字母、数字、若干专用符号及保留字组成,是符号(元素)的非空有穷集合。符号:字母表中的元素。符号串:由字母表中的符号组成的任何有穷序列空符号串:什么符号也不含的符号串,记为ε。例:Σ={a,b,c,d,……z}。a、b、c……都称为符号。hello、stri、aezfg、main、fjfka都是Σ上的符号串。符号串的长度:符号所包含符号的个数,设x是一符号串,其长度
8、记为
9、x
10、。例:
11、hello
12、=5,
13、main
14、=4,
15、ε
16、=0。符号和符号串符号串的运算1、符号串的长度:符号串中符号的个数。符号串s的长度记为
17、s
18、。ε的长度为02、连接:符号串x、y的连接,是把y的符号写在x的符号之后得到的符号串xy如x=ab,y=cd则xy=abcd有εa=aε3、方幂:符号串自身连接n次得到的符号串an定义为aa…aan个aa1=a,a2=aa则a0=ε4、符号串集合:若集合A中所有元素都是某字母表上的符号串,则称A为字母表上的符号串集合。5、两个符号串集合A和B的乘积定义为AB=xy
19、xA且yB【例】若集
20、合A=ab,cdeB=0,1则AB=ab1,ab0,cde0,cde1规定Σ0={}.令:Σ*=Σ0Σ1Σ2…称Σ*是Σ的闭包。记Σ+=Σ*-{}=Σ1Σ2Σn…,称Σ+是Σ的正则包。使用*表示上的一切符号串(包括ε)组成的集合。Σ*称为Σ的闭包。【说明】上的除ε外的所有符号串组成的集合记为+。Σ+称为Σ的正闭包。闭包Σ*中的每个符号都是由Σ中的符号串经有限次连接而成的。例:Σ={a,b}Σ*={ε,a,b,aa,ab,ba,bb,aaa,aab,…}Σ+={a,b,aa,ab,ba,bb,aaa,aab,…}由
21、句子组成的集合,是由一组符号所构成的集合。换言之,字母表上的一个语言是上的一些符号串的集合(字母表上的每个语言是*的一个子集)。