第二章文法和语言.ppt
《第二章文法和语言.ppt》由会员分享,可在线阅读,更多相关《第二章文法和语言.ppt(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章 文法和语言,2.1文法的基本概念 符号和符号串 文法和语言的形式定义 推导与递归 文法的分类2.2句型的分析 语法树 文法的约定 句型的分析方法,主要内容,本章讨论与编译实现相关的形式语言理论基本概念,主要内容有:文法与语言的形式定义Chomsky文法及其分类上下文无关文法的主要特性文法的等价变换句型分析的概念,文法与语言,一个程序设计语言的确切定义是构造编译程序的重要前提。文法被用来精确而无歧义地描述语言的构成方式.文法描述语言的时候不考虑语言的含义。,2.1 语言和文法的直观概念,程序设计语言的定义语言是一个记号系统。汉语-符合汉语语法的句子的全体英语-符合英语语法的句子的全体程序
2、设计语言-该语言的程序的全体程序设计语言由语法和语义定义: 语法:定义每个程序构成的规则 语义:定义每个程序的意义,程序设计语言包括:语法和语义语法(syntax)定义: 是一组规则,用它可以形成和产生一个合适的程序描述工具:文法作用: 定义什么样的符号序列是合法的,与符号的含义无关。,语义(semantics)分类:静态语义:一系列限定规则,确定哪些合乎语法的程序是合适的动态语义:表明程序要做什么描述工具: 指称语义,操作语义等作用: 检查类型匹配,变量作用域等,文法的直观概念,如何来描述一种语言?文法是描述语言的语法(形式)结构的形式规则。如果语言是有穷的(只含有有穷多个句子),可以将句子
3、逐一列出来表示如果语言是无穷的,要找出语言的有穷表示。 有两个途经:生成方式 (文法):语言中的每个句子可以用严格定义的规则来构造识别方式(自动机):用一个过程,当输入的一任意串属于语言时,该过程经有限次计算后就会停止并回答“是”,若不属于,要么能停止并回答“不是”,要么永远继续下去。,例:“我是大学生”是汉语的一个句子,用EBNF来表示汉语句子的构成规则:句子=主语谓语主语=代词名词代词= 我你他名词= 王明大学生工人英语谓语=动词直接宾语动词= 是学习直接宾语=代词名词,由规则推导句子,方法: 用一条规则=的右端符号串代替:=的左端.表示: 用“ = ”表示推导,含义是,使用一条规则,代替
4、=左边的某个符号,产生=右端的符号串.,例如:句子“我是大学生”的推导过程如下:句子 主语谓语 代词谓语 我谓语 我动词直接宾语 我是直接宾语 我是名词 我是大学生,形式语言,Chomsky于1956年提出了一种用来描述语言的数学系统。人们把用一组数学符号和规则来描述语言的方式称为形式描述,而把所用的数学符号和规则称为形式语言。形式语言,只是从语法上研究语言。它是抽象的数学系统,用于模拟程序设计语言的语法,或者是并不很成功地模拟自然语言如英语的语法。形式语言理论是编译理论的重要基础,它主要研究组成符号语言的符号串的集合及它们的表示法、结构与特性。,形式语言和编译理论中的最基本概念符号串和符号串
5、集合,基本定义它们的运算,2.2 符号和符号串,字母表定义:元素的非空有穷集合例:=01 =ab,c元素也称为符号,字母表也称符号集。程序语言的字母表由字母数字和若干专用符号组成。,符号串定义:由字母表中的符号组成的任何有穷序列例: 0,00,10是字母表=01上的符号串 a,ab,aaca是=ab,c上的符号串在符号串中,符号是有顺序的,顺序不同,代表不同的符号串,如:ab和ba不同不含任何符号的符号串称为空串,用表示注意:并不等于空集合 符号串长度: 符号串中含有符号的个数如: |abc|=3| |=0,子符号串,设有非空符号串u=xvy,其中符号串 ,则称v为符号串u的子符号串。,V,例
6、如 符号串x=a+b*(c+d),则 a, a+b*, 与(c+d)等都是x的子符号串,且 其长度分别为|a|=1, |a+b*|=4, |(c+d)|=5,符号串的头与尾,如果z=xy是一个符号串,则x是z的头,而y是z的尾。如果y非空,则x是z的固有头;如果x非空,则y是z的固有尾。,例如:字母表A=a,b,c上的符号串x=abc, 则x的 头:, a, ab, abc, 尾:, c, bc, abc 固有头: , a, ab, 固有尾:, c, bc,符号串的运算符号串的连接:设x、y是符号串,它们的连接是把y的符号写在 x的符号之后得到的符号串xy例如 x=ST,y=abu ,则 xy
7、=STabu 显然x = x=x符号串的方幂:把符号串a自身连接n次得到的符号串an = aaaa例如 a1=a a2=aa a0=,符号串集合:定义: 若集合A中所有元素都是某字母表上的符号串,则称A为字母表上的符号串集合。符号串集合的乘积:符号串集合A和B的乘积定义为:AB =xy|xA且yB,即AB是由A中的串x和B中的串y连接而成的串xy组成的集合。若集合A = ab,cde B = 0,1 则 AB = ab0,ab1,cde0,cde1显然 A = A = A,符号串集合的方幂: 设A是符号串的集合,则称Ai为符号串集A的方幂,其中i是非负整数。具体定义如下:A0 = A1 = A
8、 , A2 = A AAK = AA.A(k个),集合的闭包闭包集合的闭包 *定义如下: * = 0 1 2 3例:设有字母表=0,1则*=012=,0,1,00,01,10,11,000,即*表示上所有有穷长的串的集合。,正闭包+ = 123称为的正闭包。 + 表示上的除外的所有用穷长串的集合* = 0+ = * = * ,字母表上的一个语言是上符合某种规则的一些符号串的集合 ,是*的一个子集。例如:=a,b *=,a,b,aa,ab,ba,bb,aaa,aab,1. 集合ab,aabb,aaabbb,anbn,或w|w*且w=anbn,n1为字母表上的一个语言。集合a,aa,aaa,或w|
9、w*且w=an,n1为字母表上的一个语言。是一个语言。即 是一个语言。,小结,1 符号与字母表2 符号串3 符号串的运算4 符号串集合5 集合的闭包6 字母表的闭包,2.3 文法和语言的形式定义,1文法的定义2文法形式上的约定3推导与归约4句型、句子、语言的定义5文法的等价,“我是大学生”是汉语的一个句子,用:=表示的汉语句子的构成规则:句子=主语谓语主语=代词名词代词= 我你他名词= 王明大学生工人英语谓语=动词直接宾语动词= 是学习直接宾语=代词名词,句子“我是大学生”的推导过程如下:从句子出发,反复把规则中的”:=”左边的成分替换成右边的成分。句子 主语谓语 代词谓语 我谓语 我动词直接
10、宾语 我是直接宾语 我是名词 我是大学生,文法介绍,包括四个组成部分:一组终结符号(不能被替换的符号,单词符号)一组非终结符号(能够被替换为终结符号或非终结符号,语法单位)一个开始符号(从这个符号开始替换,最大语法单位-程序)一组产生式(替换规则,把左边的字符串替换为右边的字符串),关键思路,从文法的开始符号出发,反复使用产生式,对非终结符进行替换(展开),直到整个字符串中不在包含非终结符。这时,得到了这个文法的一个句子(一个程序)这个过程称为推导,1文法的形式定义,产生式(规则)产生式是一个有序对(,),通常写作 (或:= )文法定义:文法G(Grammar)定义为四元组(VN,VT,P,S
11、)VN (Nonternimal):非终结符集VT (Terminal):终结符集P (Production):产生式(规则)集合S:开始符号或识别符号,说明:V=VNVT,V称为文法G的字母表P中产生式形如:,其中V+且至少含一个非终结符,V*VN,VT和P是非空有穷集VNVT=S是一个非终结符,且至少要在一条产生式的左部出现非终结符代表一个语言中的语法成分,如,它是构成程序的一个语法成分,这个符号本身不会在程序中出现,而终结符是组成程序的具体的符号。,2 文法形式定义上的约定,文法习惯上只将产生式写出。并有如下约定:第一条产生式的左部是开始符号,或用GS表示S是开始符号用尖括号括起的是非终
12、结符,否则为终结符。或者大写字母表示非终结符,小写字母表示终结符G可写成GS,S是开始符号希腊字母代表由终结符号和非终结符号组成的符号串 、左部相同的产生式A,A可以记为A|,其中“|”是“或”的意思,,分别称为侯选式,如:对于文法 G:S0S1 可写成 GS:S0S1 S01 S01例:文法G=(VN,VT,P,S)其中:VN=S,VT=0,1,P=S0S1,S01开始符为S,例:文法G=(VN,VT,P,S)VN =标识符,字母,数字,VT =a,b,c,x,y,z,0,1,9,P=, , a, , z,0,9 ,S=例如:文法GS: SA|SA|SDAa|b|zD0|1|9,3. 推导(
13、Derivation)与归约(Reduction),直接推导和直接归约: 是文法G的产生式,若有v,w满足:v=,w=, 其中,V* 则称v直接推导出w,也称w直接归约到v,记作 v w直接推导就是用产生式的右部替换产生式的左部的过程直接归约就是用产生式的左部替换产生式的右部的过程,例 文法G: S0S1,S01 有直接推导: S 0S1( S0S1 )0S1 00S11( S0S1 ) 00S11 000S111( S0S1 ) 000S111 00001111( S01 ),推导例题1,文法G1:S-bA, A-aA|a定义了一个什么样的语言?S=bA=baS=bA=baA=baaS=bA
14、=baA=baaA=baaaS=bA=baA=baaL(G1)=ban|n=1 L(G1) = 以b开头后跟一个或多个a的串,推导例题2,e.g. 文法产生的语言,文法G4对句子aaabb的推导:S = A B S A B = a A B A a A = a a A B A a A = a a a B A a = a a a b B B b B = a a a b b B b,A= aB = abA= Ab = ab,e.g. 文法产生的语言,文法G5对句子aaaabbbb的推导:S = a S b S a S b = a a S b b S a S b = a a a S b b b S a
15、 S b = a a a a b b b b S a b,直接推导序列和广义推导,直接推导序列: 或 + 若存在v =u0 u1 . un=w, (n0) 则称v + w,v推导出w,或w归约到v(至少有1步推导),这个直接推导序列的长度为n。广义推导: 或 * 若有v + w 或 v=w, 则记为v * w,v广义推导出w,w广义规约到v(可以包含0步推导),+,*,三种推导的比较,直接推导()的长度为1直接推导序列( +)的长度n1广义推导( *)的长度0,规范推导与规范规约,考虑两种特殊推导:最右推导和最左推导,即 对于一个推导序列中的每一步直接推导,都是对最左(最右)非终结符进行替换。
16、最右推导也称规范推导,它的逆过程称为最左规约,也称规范规约。 .若用表示规约,设Aa是文法G中的一个规则,则对于 xAy xay 有 . xay xAy,举例,例1: 文法GS: SAB AA0|1B B0|S1 请给出句子101001的最左和最右推导。 最左推导: S AB 1B B10B 10S1 10AB1 101BB1 1010B1 101001 最右推导: S AB AS1AAB1 AA01 A1B01 A1001 1B1001 101001,例2 文法G:EE+T|T TTF|F F(E)|i句子i+ii的推导过程如下:最左推导:E=E+T=T+T=F+T=i+T=i+TF=i+F
17、F =i+iF=i+ii最右推导:E=E+T=E+TF=E+Ti=E+Fi=E+ii = T+ii=F+ii=i+ii,递归规则,借助于自身来定义的规则,称为递归规则。如 := 递归规则的存在,使得能用有穷个规则来定义无穷的语言。如果一个规则形如U:=U(或UxUy),则该规则是递归的; 如果规则形如U:=U (或UUy),则称左递归的; 如果规则形如U:=U (或UxU),则称右递归的。例::=, (左递归规则) :=! (右递归规则),文法的递归性,定义:对于某文法,存在UVN, 如果U + U., 则称该文法递归于U; 如果U + U,则称该文法左递归于U; 如果U + U,则称该文法右
18、递归于U。例1:C语言中: + (文法右递归于)例2: UVx VUy|z (都不递归) 有 U + Uxy,所以该文法是左递归的。注:描述程序设计语言的文法必定都是递归的。,4句型、句子、语言的定义,句型和句子设有文法GS,若符号串是从开始符推导出来的,即 S =* ,则称是文法G的句型。若仅由终结符组成,即 S =* ,且VT*,则称是文法G的句子。例 文法GS: S0S1, S01因为S 0S1 00S11 000S111 00001111所以S,0S1 ,00S11 ,000S111,00001111都是G的句型00001111是G的句子由规范推导所得的句型称为规范句型,语言的定义由文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 文法 语言
限制150内