第 2 讲 文法和语法

合集下载

第二章 前后文无关文法和语言 课后答案【khdaw_lxywyl】

第二章 前后文无关文法和语言 课后答案【khdaw_lxywyl】

第二章前后文无关文法和语言1设有字母表A1={a,b,…,z},A2={0,1,…,9},试回答下列问题:(1)字母表A1上长度为2的符号串有多少个?(2)集合A1A2含有多少个元素?(3)列出集合A1(A1∪A2)*中的全部长度不大于3的符号串。

2试分别构造产生下列语言的文法。

(1){anbn|n≥0};(2){anbmcp|n,m,p≥0};(3){an#bn|n≥0}∪{cn#dn|n≥0};(4){w#wr#|w∈{0,1}*,wr 是将w 中的符号按逆序排列所得的符号串};(5)任何不是以0开始的所有奇整数所组成的集合;(6)所有由偶数个0和偶数个1所组成的符号串的集合。

3试描述由下列文法所产生的语言的特点(文法的开始符号均为S)。

(1)S→10S0S→aAA→bAA→a (2)S→SSS→1A0A→1A0A→ε(3)S→1AS→B0A→1AA→CB→B0B→CC→1C0C→ε(4)S→bAdcA→AGSG→εA→a (5)S→aSSS→a4设已给文法G=(VN,VT,P,S),其中:VN={S}VT={a1,a2,…,an,∨,∧,~,[,]}P={S→ai|i=1,2,…,n}∪{S→~S,S→[S∨S],S→[S∧S]},试指出此文法所产生的语言。

5考察文法G=(VN,VT,P,S),其中:VN={S,A,B,C,D,E,F,G}VT={a},P={S→ABC,C→BC,C→A,BA→GE,BG→GBF,AG→AD,DB→BD,DE→AE,FB→BF,FE→Ea,AA→ε}(1)指出此文法的类型;(2)证明此文法所产生的语言为L(G)={at(n)|n≥1}t(n)=∑n[]i=1i6设已给文法G[〈程序〉]:〈程序〉→〈分程序〉|〈复合语句〉〈分程序〉→〈无标号分程序〉|〈标号〉:〈分程序〉〈复合语句〉→〈无标号复合语句〉|〈标号〉:〈复合语句〉〈无标号分程序〉→〈分程序首部〉;〈复合尾部〉〈无标号复合语句〉→begin〈复合尾部〉〈分程序首部〉→begin〈说明〉|〈分程序首部〉;〈说明〉〈复合尾部〉→〈语句〉end|〈语句〉;〈复合尾部〉〈说明〉→d 〈语句〉→s 〈标号〉→Lw w w .k h da w .c o m课后答案网(1)给出句子L:L:begin d;d;s;s end 的最左推导和最右推导。

第2章 文法和语言的基本知识

第2章  文法和语言的基本知识

例如, ∑′={0,1}是一个字母表,由0 和1两个元素组成。 不同的语言有不同的字母表,如英文的字 母表是26个字母、数字和标点符号的集合,C语 言的字母表是由字母、数字和若干专用符号组 成。 2. 符号(字符) 字母表中的元素称为符号,或称为字符。 例如,前述例子中,a,b,c是字母中∑ 中的符号;0和1是字母表∑′中的符号。
例如:用A表示∑ + ,用式子A→0表示符号串 0∈A或A生成符号串0,符号“→”读做“生成”或 “由……组成”。则集合A可表示成 A→0 A→1 A→A0 A→A1 显然,由A生成的符号串属于∑+,这就是用文 法描述语言。
编译原理授课教案
2.2.2 文法的形式定义
1. 规则 规则也称产生式,它是一个符号与一个符号 串的有序对(A,β),通常写做 A→β(或A::=β) 其中,A是规则左部,它是一个符号;β是 规则右部,它是一个符号串;“→”和“::=”表 示“定义为”或”生成”,意思是左部符号用右 部的符号串定义或左部符号生成右部是集合, 而{ε}表示由空符号串ε所组成的集合,但 这样的集合不是集合φ={}。 3. 符号串的幂运算 设x是符号串,则x的幂运算定义为 x0=ε X1= x x2 = xx ………… xn = xxxx……xx=xxn-1 ( n > 0)
编译原理授课教案
编译原理授课教案
试设计一个表示所有标识符的文法。 例2.2 :
分析 题意是用文法定义标识符,必须确 定P中规则。为了设计出一组规则,首先应搞清 楚集合中符号串的结构特征。标识符的定义是 字母或以字母开头的字母数字串,结构如图:
字母 字母或数字串
用I代表标识符,L代表字母,D代表数字, 则定义标识符的方法为 G = (VN ,VT, P , S)

2019年郑州大学编译原理第2章.ppt

2019年郑州大学编译原理第2章.ppt
(3)若E为表达式,是一元运算符,则 E (或E )
也 是表达式;
(4) 若E为表达式,则 ( E )也是表达式。
二、语句
1、赋值句 2、控制语句
无条件转移语句 条件语句 循环语句 过程(或函数)调用语句 返回语句
3、说明句 4、简单句和复合句
§2.3 程序语言的语法描述
本节介绍高级语言语法结构的形式化描述问题
例题2.5
构造一个文法G4,使得
L(G4)={ ambn | m>n≧0 } 正解:文法G4: SAB Aa|aA BaBb|ε
上下文无关文法定义 归纳起来,一个上下文无关文法包括四个组成 部分: 一组终结符号 如:me ,book,gave 等 一组非终结符号 如:<主语>,<谓语> 等 一个开始符号 如: <句子> 一组产生式 如: <间接宾语> → <代词> <直接宾语> → <冠词> <名词>
上下文无关文法定义
形式上说,一个上下文无关文法G是一个四元式: G=(VT,VN,S,),其中: VT是一个非空有限集,它的每个元素为终结符号; VN是一个非空有限集,它的每个元素为非终结符号 且VT∩VN= Φ S 是一个非终结符号,称为开始符号; 是产生式有限集合,形如 A→α * 其中:A∈ VN, α∈(VT U VN) 。 注: 开始符号S是一个特殊的非终结符号,它至少 必须在某个产生式的左部出现一次。
语义规则 是指这样的一组规则,使用它可以定义一
个程序的意义。

描述语义规则的工具:
基于属性文法的语法制导下的翻译方法
2.1.3 程序
所谓程序,是描述一定数据的处理过程,即包括描述 数据和对数据的运算两个功能。

编译原理(第二版)第3章 文法和语法

编译原理(第二版)第3章 文法和语法

〈动词〉::= 是 | 学习
〈直接宾语〉::=〈代词〉|〈名词〉
“我是大学生”是否是该语言的句子?
〈句子〉::=〈主语〉〈谓语〉 〈主语〉::=〈代词〉|〈名词〉 〈代词〉::= 你 | 我 | 他 〈名词〉::= 王明 | 大学生 | 工人 | 英语 〈谓语〉::=〈动词〉〈直接宾语〉 〈动词〉::= 是 | 学习 〈直接宾语〉::=〈代词〉|〈名词〉 〈句子〉
}的文法。
分析:n≧1,所以必须用递归规则。a和b的 个数 一样多,但c的个数不同,所以将生成 含 a,b的部分与生成含e的部分分开,A生成 ab,B生成e. G[Z]:Z→AB
A→aAb|ab
B→eB|ε
4)文法的等价
• 若L(G1)=L(G2),则称文法G1和G2是等价的。
如文法G1[A]:A→0R 与 G2[S]:S→0S1 等价
设 z = abc, 那么 z 的头是: ε ,a ,ab , abc(除 abc 外都是固有头) z 的尾是: ε ,c ,bc , abc(除 abc 外都是固有尾)
4、符号串的运算
符号串的长度:符号串中符号的个数.符号串s的长度 记为|s|。 ε的长度为0 符号串的连接:符号串x、y的连接,是把y的符号写在 x的符号之后得到的符号串xy 例 x=ST,y=abu 则 xy=STabu
|x|=2,|y|=3,|xy|=5
εx = xε= x
方幂:符号串x自身连接n次得到的符号串 xx…xx(n个x)定义为 xn x0=ε , x1=x, x2=xx, x3=xxx x=AB, 则 x0=ε , x1=AB, x2=ABAB, x3=ABABAB 对于 n>0, xn = xxn-1 = xn-1x
例如: 汉语的字母表中包括汉字、数字及标点符号等。 C语言的字母表是由字母、数字、若干专用符号及IF、 FOR之类的保留字组成。

属性文法和语法制导翻译

属性文法和语法制导翻译

id1
如果一属性文法不存在属性 之间的循环依赖关系,那么 称该文法为良定义的
T type
5 in L
4
real
7 in L y 8 ,
y6 id3 entry 3
9 in L y 10 ,
id2 entry 2
id1 entry 1
属性的计算顺序
无环有向图的拓扑排序
无环有向图中节点m1,m2,…,mk的拓扑排序是:若 mi→mj是从mi到mj的边,那么在此排序中mi先于mj 依赖图的任何拓扑排序都给出了一个分析树中各节点 语义规则计算的正确顺序,即在计算f之前,语义规则
real id1,id2,id3
语法制导翻译
基于属性文法的处理过程通常是:
对符号串进行语法分析,
构造语法分析树
根据需要遍历语法树并在语法树的各结点处按语义规 则进行计算。
这种由源程序的语法结构驱动的处理办法就是语法制 导翻译法。
在某些情况下,在进行语法分析的同时完成语义规则
的计算而无须明显地构造语法树或构造属性之间的依
real L.in=real ,
id3
L.in=real ,
id2
id1

产生式 D→TL T→int T→real L→L1 , id
L→id
语义规则 L.in := T.type T.type := integer T.type := real L1.in := L.in addtype(id.entry, L.in) addtype(id.entry, L.in)
为每个包括过程调用的语义规则引入一个虚综合属性b,把每条 语义规则都变成b=f(c1,c2,...,ck)的形式 依赖图的每个结点表示一个属性 边表示属性间的依赖关系。如果属性b依赖于属性c,那么从c到 b就有一条有向边

编译原理第二章 文法和语言资料

编译原理第二章  文法和语言资料

第二章文法和语言本章讲述目前广泛使用的上下文无关文法。

即用上下文无关文法作为程序设计语言语法的描述工具。

阐明语法的一个工具是文法。

本章将介绍文法和语言的概念。

本章重点:上下文无关文法及其句型分析中的有关问题。

第一节文法的直观概念当我们表述一种语言时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需列出句子的有穷集就行了,但对于有无穷句子的语言来讲,存在着如何给出它的有穷表示的问题。

以自然语言为例,人们无法列出全部句子,但是人们可以给出一些规则,用这些规则来说明(或者定义)句子的组成结构,比如:“我是大学生”。

是汉语的一个句子。

汉语句子可以是由主语后随谓语而成,构成谓语的是动词和直接宾语,我们采用EBNF来表示这种句子的构成规则:〈句子〉∷=〈主语〉〈谓语〉〈主语〉∷=〈代词〉|〈名词〉〈代词〉∷=我|你|他〈名词〉∷=王明|大学生|工人|英语〈谓语〉∷=〈动词〉〈直接宾语〉〈动词〉∷=是|学习〈直接宾语〉∷=〈代词〉|〈名词〉“我是大学生”的构成符合上述规则,而“我大学生是”不符合上述规则,我们说它不是句子。

这些规则成为我们判别句子结构合法与否的依据。

一旦有了一组规则以后,我们可以按照如下方式用它们去推导或产生句子。

我们开始去找∷=左端的带有〈句子〉的规则并把它表示成∷=右端的符号串,这个动作表示成:〈句子〉⇒〈主语〉〈谓语〉,然后在得到的串〈主语〉〈谓语〉中,选取〈主语〉或〈谓语〉,再用相应的规则∷=右端代替之。

比如,选取了〈主语〉,并采用规则〈主语〉∷=〈代词〉,那么得到:〈主语〉〈谓语〉⇒〈代词〉〈谓语〉,重复做下去,我们得到句子:“我是大学生”的全部动作过程是:〈句子〉⇒〈主语〉〈谓语〉⇒〈代词〉〈谓语〉⇒我〈谓语〉⇒我〈动词〉〈直接宾语〉⇒我是〈直接宾语〉⇒我是〈名词〉⇒我是大学生符号⇒的含义是,使用一条规则,代替⇒左边的某个符号,产生⇒右端的符号串。

显然,按照上述办法,不仅生成“我是大学生”这样的句子,还可以生成“王明是大学生”,“王明学习英语”,“我学习英语”,“他学习英语”,“你是工人”,“你学习王明”等几十个句子。

第2章 形式语言概述

第2章 形式语言概述

2.1.1字母表

定义2.1 字母表是元素的非空有穷集合,字母表中 的元素称为符号,因此字母表也称为符号表。高级 语言如C语言的字母表是由字母、数字、特殊符号 和一些专用符号构成。 例 ={a,b}, ={0,1}, ={0,1,2,3,4,5,6,7,8,9},


∑={a,b,c,…z,if,then,else,main,1,2,3,4,…,9,0,=, ==,>,<,;(,)}



P为产生式的规则:
{N→L|NL|ND
L→a|b| c
D→1|2|3 }
2.2.3文法的分类

自从乔姆斯基(Chomsky)于1956年建立形式语言的描述以来,把文法分成 四种类型,即0型、1型、2型和3型文法。


0型文法(短语文法)
设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈ (VN∪VT )+ ,且至少含有一个非终结符,而β∈(VN∪VT )*,则称G是一 个0型文法。0型文法又称短语文法,它的能力相当于一个图灵机。 例如,A→
1.0型语言与图灵机
图灵机是识别0型文法的识别装置。图灵机被
引进作为描述过程的数学模型,过程的直观 概念被看成是能机械实现的有穷指令的序列。 图灵机的基本模型如图2-1所示。它有一个有 限控制器、一个被分成若干单元的输入带和 一个一次读入一个单元的读头组成
a1
a2

2.符号串的长度 符号串x中所包含的符号的个数称为符号串x的长度, 记为|x| 。例如字母表{0,1},则|010110|=6。ε记为 空串,长度为0。


3.子字符串
定义2.3 设有非空符号串u=xvy,其中x、v、y是符号串, 且v≠ε,则称v为符号串u的子符号串。

第2章文法和语言终

第2章文法和语言终

第2章文法和语言本章目的:为语言的语法描述寻求工具, 工具要对程序设计语言给出精确无二义的语法描述。

(严谨、简洁、易读)形式工具:形式语言抽象地定义为一个数学系统。

“形式”:语言的所有规则只以什麽符号串能出现的方式来陈述2.1 语言概述和文法的直观概念2.2 符号和符号串2.3 文法和语言的形式定义2.4 文法的类型2.5 上下文无关文法及语法树2.6 句型的分析2.7 文法实用性的一些说明2.1 语言概述和文法的直观概念一、基本概念语言:是由句子组成的集合,是由一组符号所构成的集合。

汉语:所有符合汉语语法的句子的全体。

英语:所有符合英语语法的句子的全体。

程序设计语言:所有该语言的程序的全体。

二、语言研究的内容语法:每个句子构成的规律/每个程序构成的规律。

表示构成语言句子的各个记号之间的组合规律。

在形式语言理论中,阐明语法的工具是文法。

语义:每个句子的含义/每个程序的含义。

表示各个记号的特定含义。

(各个记号和记号所表示的对象之间的关系)。

语用:每个句子和使用者的关系/每个程序和使用者的关系。

表示在各个记号所出现的行为中,它们的来源、使用和影响。

三、文法的直观描述采用EBNF来表示句子的构成规则。

先给定如下一组规则:〈句子〉∷=〈主语〉|〈谓语〉〈主语〉∷=〈代词〉|〈名词〉〈代词〉∷=我|你|他〈名词〉∷=王明|大学生|工人|英语〈谓语〉∷=〈动词〉|〈直接宾语〉〈动词〉∷=是|学习〈直接宾语〉∷=〈代词〉|〈名词〉例:“我是大学生”。

具体操作如下:〈句子〉⇒〈主语〉|〈谓语〉⇒〈代词〉〈谓语〉⇒我〈谓语〉⇒我〈动词〉〈直接宾语〉⇒我是〈直接宾语〉⇒我是〈名词〉⇒我是大学生文法:就是这样一些规则的有穷集合,它是以有穷规则集来刻划无穷句子集合的工具。

2.2 符号和符号串一、基本概念字母表:元素的非空有穷集,记为Σ符号:字母表中的元素符号串:符号的有穷序列空符号串:什么符号也不含的符号串,记为ε例:Σ={a,b,c,d,……z}a、b、c……都称为符号hello、stri、aezfg、main都是Σ上的符号串。

第二章 文法和语言

第二章 文法和语言

符号串的方幂:把符号串a自身连接n次 得到的符号串an = aa…aa 例如 a1=a a2=aa a0=ε
4. 符号串集合: 定义: 若集合A中所有元素都是某字母表上 的符号串,则称A为字母表上的符号串集合。

符号串集合的乘积:符号串集合A和B的乘积 定义为: AB ={xy|x∈A且y∈B},即AB是由A中的串x 和B中的串y连接而成的串xy组成的集合。 若集合A = ab,cde B = 0,1 则 AB = ab0,ab1,cde0,cde1 显然 {ε}A = A{ε} = A
文法与语言
一个程序设计语言的确切定义是构造编 译程序的重要前提。 文法被用来精确而无歧义地描述语言的 构成方式. 文法描述语言的时候不考虑语言的含义。
2.1 语言和文法的直观概念
程序设计语言的定义 语言是一个记号系统。 汉语--符合汉语语法的句子的全体 英语--符合英语语法的句子的全体 程序设计语言--该语言的程序的全体 程序设计语言由语法和语义定义:
若存在v =u0 u1 ... un=w, (n>0)
则称v + w,v推导出w,或w归约到v(至少有1 步推导),这个直接推导序列的长度为n。
* 广义推导: 或 *
若有v + w 或 v=w,
则记为v * w,v广义推导出w,w广义规约到v (可以包含0步推导)
三种推导的比较
小结
1 符号与字母表 2 符号串 3 符号串的运算 4 符号串集合 5 集合的闭包 6 字母表的闭包
2.3 文法和语言的形式定义
1.文法的定义 2.文法形式上的约定 3.推导与归约 4.句型、句子、语言的定义 5.文法的等价
“我是大学生”是汉语的一个句子

编译原理复习

编译原理复习

编译原理复习《编译原理》复习README来源⽹络&书本&PPT整理截取了⽼师课上讲解or布置的题⽬⼀些题⽬懒得贴答案了,写了些注意事项第1 章引论运⾏编译程序的计算机:宿主机运⾏编译程序所产⽣的⽬标代码的计算机:⽬标机第1 题解释下列术语:(1)编译程序:如果源语⾔为⾼级语⾔,⽬标语⾔为某台计算机上的汇编语⾔或机器语⾔,则此翻译程序称为编译程序。

(2)源程序:源语⾔编写的程序称为源程序。

(3)⽬标程序:⽬标语⾔书写的程序称为⽬标程序。

(4)编译程序的前端:它由这样⼀些阶段组成:这些阶段的⼯作主要依赖于源语⾔⽽与⽬标机⽆关。

通常前端包括词法分析、语法分析、语义分析和中间代码⽣成这些阶段,某些优化⼯作也可在前端做,也包括与前端每个阶段相关的出错处理⼯作和符号表管理等⼯作。

(5)后端:指那些依赖于⽬标机⽽⼀般不依赖源语⾔,只与中间代码有关的那些阶段,即⽬标代码⽣成,以及相关出错处理和符号表操作。

(6)遍:是对源程序或其等价的中间语⾔程序从头到尾扫视并完成规定任务的过程。

第2 题⼀个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。

(区别编译程序的六个阶段)答案:⼀个典型的编译程序通常包含8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码⽣成程序、中间代码优化程序、⽬标代码⽣成程序、表格管理程序和错误处理程序。

其各部分的主要功能简述如下。

词法分析程序:输⼈源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。

语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。

语义分析程序:进⾏语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。

中间代码⽣成程序:按照语义规则,将语法分析程序分析出的语法单位转换成⼀定形式的中间语⾔代码,如三元式或四元式。

中间代码优化程序:为了产⽣⾼质量的⽬标代码,对中间代码进⾏等价变换处理。

汉语语法学简史

汉语语法学简史
(二)现代汉语语法学的奠基作——《新著国语文法》
《新著国语文法》是以白话文为对象对现代汉语进行 系统而完整研究的第一部语法力作,作者黎锦熙,出版于 1924 年。它主要是依照纳斯菲尔德(J.C.Nesfield)r 的 《英语语法》。与《马氏文通》相比,它具有以下特点:
? 1、区分了“词”和“字”的概念。 ? 2、建立了“句本位”理论的语法体系框
总结起来,结构主义语法对汉语语法研 究的影响大致有以下五个方面:
① 划分词类标准的变化。 由传统语法的意义标准,转为结构分布(即功能)标准。
② 句法分析上引进了层次分析法。 ③ 增加了“语素”这级语法单位。 ④ 重视语序分析。
如主语宾语的确定,传统语法以意义为标准,而在结构 主义语法影响下,以语序为主要依据。
(1)人脑好像一部电脑,有一种天生的能力,当输入 一定的语言材料,它就会自动识别并加工出一套规则系 统,然后用这套规则系统产生出无数新的合法的句子来。
(2)语言学家要研究的就是这种语言能力,语法就是 要对这种语言生成的能力进行描写。这种描写不仅是静 态的,而且是动态的,即要探索语言是如何产生的。
(3)把语言结构分为“深层结构'和“表层结构”两 部分,并且找出从深层结构如何转换为表层结构的规则 以及制约转换的条件。
⑤ 对某些语法现象认识的改变。 如:“今天晴天。”这个句子在传统语法中认为是省略了
“是”这个动词,因为主观规定名词不能作谓语。结构主义语 法认为这就是一个名词谓语句,名词可以做谓语。
80年代的《中学教学语法系统提要(试用)》 吸收了较 多结构主义语法的观点。
结构主义的理论和方法对汉语语法研究的科学化、系统化 产生了深远的影响。但它回避意义、排斥意义的做法,又难免 使其研究陷入纯形式化和缺乏实用价值的境地。

现代汉语第二章

现代汉语第二章

1 第2 章语法2 1.语法和语法体系·语法是语言结构的规律·语音、词汇、语法三大部分构成了语言的主体。

是语言的三大要素。

·语音是语言的物质外壳。

·词汇是语言的建筑材料。

·语法是组词造句的规则。

34·任何语言都具有语法,不同的语言有不同的语法规律。

每一种语言都要遵从一定的组词造句规则。

·词语组合成句子不是任意的,有某种规则在起作用:如果符合这个规则,句子就合符规范,否则就不合规范。

5·弟弟很聪明。

· *弟弟聪明很· *很弟弟聪明· *很聪明弟弟· *聪明很弟弟· *聪明弟弟很6 语法的两种含义·一种语言的结构规律的总和叫语法结构。

·研究语言结构规律的科学叫语法学。

·我们平时所说的“语法”,事实上具有两个含义:·1.说话写文章要合语法。

·2.今天我们开始学习语法。

·前一句中的“语法”是指语言的结构规则本身。

·后一句中的“语法”是指研究语法规则的科学,即“语法学”。

7 语法研究什么?·语法包括词法和句法两部分。

·词法:主要是指词的构成、变化和分类规律;·句法:主要是指短语和句子等语法单位的构成和变化规则,包括短语结构规则、句法结构规则、句子类型等内容。

8 关于汉语语法的研究·我国第一部用现代语言学理论研究中国语法的著作是《马氏文通》(1898年),作者马建忠。

使原附属于“经学、训诂学”的语法学称为一门独立的学科。

“西方语法学的附庸”。

·《新著国语文法》(黎锦熙):创建现代汉语语法体系。

9 汉语语法的演变·语法的变化比起语音、词汇来要缓慢得多。

因为它是一个由各种抽象规则交织成的有紧密联系的体系。

·古代汉语现代汉语·陈涉者,阳城人也。

计算机程序编译原理 第2章 形式语言概论

计算机程序编译原理 第2章 形式语言概论

文法举例
例2.6 1型文法G6=(VN ,VT ,P,S),其中VN={S,X,Y,Z}, VT={x , y , z} , P={S→xSYZ|xYZ, xY→xy, yY→yy, yZ→yz, ZY→YZ, zZ→zz} 例2.7 2型文法G7=(VN,VT,P,S),其中VN={S,T},VT={a, b,c, d},P={S→aTd, T→bT|cT|b|c } 例2.8 2型文法G8=(VN,VT,P,B),其中VN={B},VT={(,) }, P={B→(B)|BB|( )} 例2.9 2型文法G9=(VN,VT,P,S),其中VN={S},VT={0,1 }, P={S→0S1, S→01} 例2.10 正规文法G10=(VN,VT,P,A),其中VN={A, B, C, D}, VT={x, y, z },P={A→xB|yC, B→zB|y|yC, C→xD, D→yD|x }
文法和语言的几点说明
(1) 文法中某些非终结符不在任何规则的右部出现,该非 终结符称为不可到达的; (2) 文法中某些非终结符,由它不能推出终结符号串来, 称为不可终止的(无用非终结符); (3)可空终结符,可以用于消除左递归; (4)一个文法,如果它的一个句子有两棵或两棵以上的语法 树,则称该句子具有二义性。如果一个文法含有二义性的 句子,则该文法具有二义性。形如U→U的产生式。会引起 文法的二义性。
推导
定 义 2.3 G= ( VN, VT, P, S ) , α→β 是 文 法 G 的 产 生 式 , γ,δ∈V* , 若 有 v, w 满 足 : v=γαδ, w= γβδ, 则 说 : v (应用规则α→β)直接产生w 或说:w是v的直接推导 或说:w 直接归约到v 记作 v ⇒w。 例 G[S]:S→0S1, S→01 直接推导: 0S1⇒0011 (v=0S1,w=0011,使用规则S→01,γ=0,δ=1) S ⇒0S1 (v=S,w=0S1,使用规则S→0S1,γ=ε,δ= ε ) 0S1⇒00S11 (v=0S1,w=00S11,使用规则S→0S1,γ=0,δ=1) 定义2 定义2.4 v⇒+u 若存在v =α0 =>α1=>…=>αn=u, (n>0) 则称u为u的一个推导,记为v⇒+u。 定义2 定义2.5 v⇒*u 表示v⇒+u 或 v=u

第二章 文法与语言

第二章 文法与语言

• 符号串:由字母表中的符号所组成的任 何有限序列。
• 例:设A={a,b,c}为一字母表,则a, b,c,aa,……为符号串。
• 字母表上全部符号串所组成的集合为无限 集。
• 符号串的长度:符号串中所含符号个数。 例如:符号串abc长度为3,记为|abc|=3,不 包含任何符号的符号串称为空串,记为ε 。
2.2.2 文法和语言的形式定义
• 我们可以从产生语言的角度给出文法与
语言的形式定义。
• 考虑描述英语句子语法的方法,我们是 用语法规则来描述英语句子的构成:
①.<句子>::=<主语短语><动词短语>
②.<主语短语>::=the<名词> ③.<动词短语>::=<动词><宾语短语>
④.<宾语短语>::=<冠词><名词>
• 符号串的前缀、后缀及子串:设 X 为一
符号串,其尾部删去若干符号(包括 0
个)之后剩余部分称为 X 的前缀。类似,
可定义X的后缀。取掉X的前缀和后缀,
剩 余 部 分 称 为 X 的 子 串 。
• 符号串的连接与方幂:设X,Y为符号串,
Y直接拼接在X之后所的符号串被称为符号
串X,Y的连接。记为XY。一符号串X与自
集合,则A的方幂运算可定义如下:A0
={ε } ,A1 =A,A2=AA,……An =A An-1= An-1A,n>0。 A的正闭包: A+
A的自反传递闭包: A*
• 可以证明:符号串x∈A+,当且仅当存在某 个n,有x∈An;符号串y∈A*,当且仅当 y=ε 或y∈A+;

《编译原理》第2章 文法和语言的基本知识

《编译原理》第2章 文法和语言的基本知识
第2章
文法和语言的基本知识
教学目标
1. 本章是编译原理课程的理论基础,要求掌握形 式语言的基本术语和概念,重点掌握短语、直接 短语、句柄、素短语、规范推导、规范归约。 2. 掌握文法和语言的定义,文法的二义性与递归 性的判断方法及句型的分析方法,文法分类。 3. 熟练使用文法定义程序设计语言的单词和语法 成分。 4. 对形式语言的理论有一个初步认识。
2013年8月16日
符号串集合的闭包运算
设A是符号串集合,定义 A+= A1 ∪ A2 ∪ A3 ∪……∪ An ∪…… 称为集合A的正闭包。 A*= A0 ∪A+ 称为集合A的闭包。 例:A={x,y} A+=? {x,y, xx,xy,yx,yy , xxx,xxy,xyx,xyy, ……}
A1 A A A2 A A3 A
2013年8月16日
文法的直观概念:以汉语中的“我是大学生”为例。
①一组终结符号 采用BNF来表示汉语句子的构成规则为: (语言的基本符号) 〈句子〉::=〈主语〉〈谓语〉 ②一组非终结符号 〈主语〉::=〈代词〉|〈名词〉 (语法单位) ③一个开始符号 〈代词〉::=我|你|他 文法的四部分 (一个特殊的非终结 〈名词〉::=王明|大学生|工人|英语 符号,最感兴趣的语 〈谓语〉::=〈动词〉〈直接宾语〉 法单位) 〈动词〉::=是|学习 ④一组规则(也称产 生式或产生规则) 〈直接宾语〉::=〈代词〉|〈名词〉 根据上述规则,“我是大学生”的构成符合上述规则,而“我 大学生是”不符合,我们说它不是句子。这些规则成为我们判别 句子结构合法与否的依据。换句话说,这些规则看成是一种元语 言,用它描述汉语。这种的语言描述成为文法。
说明: (1) 有若干语法成分同时存在时,我们总是从最左的语法成 分进行推导,这称之为最左推导,类似的有最右推导(一般推 导)。 (2) 从一组规则可推出不同的句子,如以上规则还可推出 “大象吃象”、“大花生吃象”、“大花生吃花生”等句子, 它们 在语法上都正确,但在语义上都不正确。

第二章 前后文无关文法和语言

第二章  前后文无关文法和语言
大学生
“我大学生是”是否为<句子>?
英语句子
sentence –> <subject> <verb-phrase> <object> subject –> This | Computers | I verb-phrase –> <adverb> <verb> | <verb> adverb –> never verb –> is | run | am | tell object –> the <noun> | a <noun> | <noun> noun –> university | world | cheese | lies This is a university. Computers run the world. I am the cheese. I never tell lies.
S→bA
A→aA|a 它定义了一个什么语言呢? 从开始符S出发,我们可以推出如下句子: SbA ba
SbA baA baa
可以写为:L(G1)={ban|n≥1}
SbA baA … baa…a
2.5 语言和文法的形式定义
1、上下文无关文法
一个上下文无关文法G定义为四元组(VN,VT,P,S ) 其中:
Σ*包含Σ上的所有符号串, Σ+包含Σ上除 空串ε外的任意符号串。
四、语言上的有关运算
1、语言:由句子组成的集合,为一符号串集合。
即:字母表上的一个语言是上的一些符号串的集合, 是*的一个子集。 L={S|S∈*} 例如:字母表Σ ={a,b} 集合 {w|w∈Σ *且w=anbn,n≥1}为上的一个语言。 集合 {w|w∈Σ *且w=an,n≥1} 为上的一个语言。 {}、{ε }都是语言
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
21
• 习惯上只将产生式写出。并有如下约定:
– 第一条产生式的左部是开始符号 – 用尖括号括起的是非终结符,否则为终结符。或 者大写字母表示非终结符,小写字母表示终结符
– G可写成G[S],其中S是开始符号
22
• 例3.4 文法 G =(VN,VT,P,S) VN = { S }, VT = { 0, 1 } P = { S→0S1, S→01 } S为开始符号 • 可写成: G[S]:S→0S1 S→01 • 或写成: G[S]:S→0S1│ 01
• 两个符号串集合A和B的乘积:
定义为 AB = xy | x A 且 y B 例: 若, 集合A=a,b B = c,d 则 ,AB =ac,ad,bc,bd {ε }A = A {ε }= A (∵ε x = xε = x)
• 闭 包: 使用 * 表示上的所有有穷长的串(包括ε )的
第二讲


文法和语言
文法和语言的形式定义
文法的类型


上下文无关文法及其语法树
上下文无关文法的句型分析 有关文法实用中的一些说明
1
第一节


语言: 是由句子组成的集合。 • 汉语 --- 所有符合汉语语法的句子的全体 • 英语 --- 所有符合英语语法的句子的全体 • 程序设计语言 --- 所有该语言的程序的全体 • 研究语言 :
语义 :表示按照各种表示方法所表示的各个
记号的特定含义。(各个记号和记号所 表示的对象之间的关系)
语用 :表示在各个记号所出现的行为中,它
们的来源、使用和影响。
4
第二节


以自然语言为例,用 EBNF 描述一种语言: 〈句子〉::= 〈主语〉〈谓语〉 〈主语〉::= 〈代词〉|〈名词〉 〈代词〉::= 你 | 我 | 他
〈名词〉::= 王明 | 大学生 | 工人 | 英语
〈谓语〉::= 〈动词〉〈直接宾语〉 〈动词〉::= 是 | 学习 〈直接宾语〉::= 〈代词〉|〈名词〉 “我是大学生” 是否是该语言的句子?
5
① ② ③ ④ ⑤ ⑥ ⑦
〈句子〉::= 〈主语〉〈谓语〉 〈主语〉::= 〈代词〉|〈名词〉 〈代词〉::= 你 | 我 | 他 〈名词〉::= 王明 | 大学生 | 工人 | 英语 〈谓语〉::= 〈动词〉〈直接宾语〉 〈动词〉::= 是 | 学习 〈直接宾语〉::= 〈代词〉|〈名词〉
Σ* = {ε,0, 1, 00, 01, 10, 11, 000,001, 010,… } 例2:设Σ ={a,b},则 Σ* = {ε,a,b,aa,ab,ba,bb,aaa,aab,… } Σ+ = { a,b,aa,ab,ba,bb,aaa,aab,… }
16
第四节
文法和语言的形式定义
• 产生式(重写规则、规则或生成式),是形如
7
第三节
符号和符号串
• 字母表:元素的非空有穷集合。(符号集) • 符号:字母表中的元素。
例如:
• 汉语的字母表中
包括汉字、数字及标点符号等。
• C++语言的字母表
是由字母、数字、若干专用符号及FOR、 IF之类的保留字组成。
8
• 符号串:由字母表中的符号组成的任何有穷序列
称为该字母表上的符号串。
28
四、 语 言 的 定 义
• 由文法G生成的语言记为L(G),它是文法G 的全部句子的集合: * L(G) = { x | S x,且x ∈VT*,
其中S为文法的开始符号 }
例:G: S→0S1, S→01
L(G) = { 0n1n | n≥1 }
29
例3.3 设G=(VN,VT,P,S), VN={S,B,E},VT={a,b,e}, P 由下列产生式组成:
集合。Σ *称为Σ 的闭包。
• 正闭包: 从*中除去ε 得到的集合记为+ 。 Σ +称为Σ 的
正闭包。
15
Σ* = Σ0 ∪ Σ1 ∪ Σ2 … ∪ Σn ∪ …
Σ+ = Σ1 ∪ Σ2 … ∪ Σn ∪ … Σ* = Σ0 ∪ Σ+ Σ+ = ΣΣ* = Σ* Σ Σ+ = Σ* -{ε}
例1:设Σ = { 0, 1 },则: Σ 是非空有穷集
1. 空符号串ε (没有符号的符号串)是上的符号串。
2. 若x是上的符号串,a是的元素,则xa和ax是上 的符号串 。 3. y是上的符号串,当且仅当它可以由1和2导出。
例如: Σ ={a,b} ε ,a,b,aa,ab,aabba,…,都是上的符号串。
9
例: Σ ={0,1}
ε ,0,1,00,01,11,1001110 等都是上的符号串. 例: Σ ={a,b,c}上的符号串有: a, b, c, ab, ba, aaca, acaa 等. 注意: 1. 符号串中的符号排列是有顺序的. 2. 可以用字母表示符号串,如: x = aaca
每个句子构成的规律 每个句子的含义 每个句子和使用者的关系
2
• 研究程序设计语言:
每个程序构成的规律
每个程序的含义
每个程序和使用者的关系
• 语言研究的三个方面:
语法 语义 语用 Syntax Semantics Pragmatics
3
语法 : 表示构成语言句子的各个记号之间的
组合规律
VN={ .....

VT={ ..... S

P={ .....

18
• 文 法 G:定义为四元组(VN,VT,P,S),其中 – VN : 非终结符集 – VT : 终结符集 – P : 产生式(规则)集合 – S : 开始符号(起始符、识别符号) VN、VT 和 P 是非空有穷集。 S 至少在一条规则中作为左部出现。 VN∩VT= φ , S∈VN , V=VN∪VT------文法G的字母表(字汇表) 注:有的参考书用(VT , VN , S , P)表示文法。
• x0=ε , x1=x, x2=xx, … , xn =xx … x
• x=AB, 则 x0=ε , x1=AB, x2=ABAB, x3=ABABAB
• 对于 n>0, xn = xxn-1 = xn-1x
14
• 符号串集合:若集合A中一切元素都是某字母表上 的符
号串,则称A为字母表上的符号串集合。
11Βιβλιοθήκη 几种表示法(x,z是符号串,t是符号):
z = x… x 是符号串 z 的头
z=…x
z = …x…
x 是符号串 z 的尾
x 在符号串z 中某处出现
z = t… 符号 t 是 符号串 z 的第一个符号
z = … t 符号 t 是 符号串 z 的最后一个符号
12
符号串的运算
符号串的长度 : 符号串中符号的个数。符号串s的
* (1)S→aSBE
an1S ( BE )n1
(2)S →aBE (3)EB →BE (4)aB →ab (5)bB →bb (6)bE →be (7)eE →ee
19
• 例3.1 文法G=(VN,VT,P,S) VN = { S }, VT = { 0, 1 } P = { S→0S1, S→01 } S为开始符号
或写成: G[S]: S→0S1, S→01
20
例3.2 文法G=(VN,VT,P,S) VN ={标识符,字母,数字} VT ={a,b,c,…,x,y,z,0,1,…,9} P = {<标识符> → <字母> <标识符> → <标识符><字母> <标识符> → <标识符><数字> <字母> → a ,… , <字母> → z <数字> → 0 ,…, <数字> → 9 } S = <标识符>
长度记为|s|。 ε 的长度为0。
连 接 : 符号串x、y的连接,是把y的符号写在x的符
号之后得到的符号串xy
例: x=ST,y=abu 则 xy=STabu |x|=2,|y|=3,|xy|=5
• ε x = xε = x
13


符号串x自身连接n次得到的符号串 xx…xx(n个x)
表示为 xn
α →β 或α ∷=β 的(α ,β )有序对,其中α 是某字母表V的正闭包V+中的一个符号串,β 是V* 中的一个符号串。(α ∈V+,β ∈V*) • α 称为产生式的左部(或规则的左部)。 • β 称为产生式的右部(或规则的右部)。
17
一、 文 法 的 定 义
① ② ③ ④ ⑤ ⑥ ⑦ 〈句子〉::= 〈主语〉〈谓语〉 〈主语〉::= 〈代词〉|〈名词〉 〈代词〉::= 你 | 我 | 他 〈名词〉::= 王明 | 大学生 | 工人 | 英语 〈谓语〉::= 〈动词〉〈直接宾语〉 〈动词〉::= 是 | 学习 〈直接宾语〉::= 〈代词〉|〈名词〉
24
例 文法G=(VN,VT,P,S) VN = {标识符,字母,数字} ; VT = {a,b,c,…x,y,z,0,1,…,9} P = {<标识符>→<字母> <标识符>→<标识符><字母> <标识符>→<标识符><数字> <字母>→a,…, <字母>→z <数字>→0,…, <数字>→9 } S = <标识符> 指出下面直接推导所使用的规则: <标识符> <标识符><字母> <标识符> <字母> <数字> <字母> <字母> <数字>
相关文档
最新文档