第3章 文法和语法(lly)3

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例3.1 文法G=(VN,VT,P,S) VN = { S }, VT ={ 0, 1 } P={ S→0S1, S→01 } S为开始符号
13
例3.2 文法G=(VN,VT,P,S) VN ={标识符,字母,数字} VT ={a,b,c,…x,y,z,0,1,…,9} P={<标识符>→<字母> <标识符>→<标识符><字母> <标识符>→<标识符><数字> <字母>→a,…, <字母>→z <数字>→0,…, <数字>→9 } S=<标识符> 思考: C语言的标识符(变量命名)如何用文法定义?
例如: 汉语的字母表中包括汉字、数字及标点符号等。 C语言字母表是由字母、数字、若干专用符号及 保留字组成。
7
2、符号串 1)符号串:由字母表中的符号组成的任何有穷序列 称为该字母表上的符号串。 空符号串ε (没有符号的符号串)是上的符号串 若x是上符号串,a是的元素,则xa和ax是上符号串 y是上的符号串,当且仅当它可以由1和2导出。 例如: Σ ={0,1} ε ,0,1,00,01,11,1001110等都是上的符号串.
9
3、符号串的运算 1)符号串的长度:符号串中符号的个数.符号串s的 长度记为|s|。 ε 的长度为0 2)连接:符号串x、y的连接,是把y的符号写在x的符 号之后得到的符号串xy 例: x=ST,y=abu 则 xy=STabu |x|=2,|y|=3,|xy|=5 ε x = xε = x 3)方幂:符号串x自身连接n次得到的符号串 xx…xx(n个x)定义为 x n x0=ε, x1=x, x2=xx, x3=xxx x=AB, 则 x0=ε, x1=AB, x2=ABAB, x3=ABABAB 对于 n>0, x n = xxn-1 = xn-1x 4)符号串集合:若集合A中一切元素都是某字母表 上的符号串,则称A为字母表上的符号串集合。
〈句子〉::= 〈主语〉〈谓语〉 〈主语〉::= 〈代词〉|〈名词〉 〈代词〉::= 你 | 我 | 他
12
2、文法G定义为四元组(VN,VT,P,S) ① 元素说明: VN :非终结符集 VT :终结符集 P:产生式(规则)集合 S:开始符号(识别符号) VN、VT 和 P 是非空有穷集。S 至少在一条规则 中作为左部出现。 ② VN∩VT= φ , S∈VN ③ V=VN∪VT,称为文法G的字母表(字汇表)
思考: 文法的句型与句子的关系? 文法G能得到哪些句子?
19
5、语言的定义:由文法G生成的语言记为L(G),它是 文法G的一切句子的集合: 即L(G)={x|S * x,其 中S为文法的开始符号,且x ∈VT*} 例:G: S→0S1, S→01 L(G)={0n1n|n≥1}
思考:文法G1[A]:A→0R A→01 R→A1的语言?
10
5)两个符号串集合A和B的乘积定义为 AB =xy|xA且yB 若 集合A=a,b B = c,d 则 AB =ac,ad,bc,bd {ε}A = A {ε}= A (εx = xε= x) 6)使用 * 表示上的所有有穷长的串(包括ε)的集合。 Σ*称为Σ的闭包。 7)从*中除去ε得到的集合记为+ 。 Σ+称为Σ的正闭包。 Σ* = Σ 0 ∪ Σ1 ∪ Σ2 … ∪ Σn … Σ+ = Σ 1 ∪ Σ2 … ∪ Σn … Σ* = Σ 0 ∪ Σ+ Σ+ = ΣΣ* = Σ* Σ Σ+ = Σ* -{ε} 例:设Σ ={a,b},则 Σ *={ε ,a,b,aa,ab,ba,bb,aaa,aab,…} Σ +={a,b,aa,ab,ba,bb,aaa,aab,…}
〈句子〉 〈主语〉〈谓语〉 〈代词〉〈谓语〉 我〈谓语〉 我〈动词〉〈直接宾语〉 我是〈直接宾语〉 我是〈名词〉 我是大学生 思考: ① “”的含义? ② “我大学生是” 与“大学生是王明”是句
5
3、程序设计语言与文法关系: 一个程序设计语言是一个记号系统,如自然语言一样, 由语句组成,完整的定义应包含语法与语义两个方面。 语法规定了语句形成的规则,(哪些符号序列是合法的, 而与其含义无关);语义不仅要限定语法规则(静态), 而且要表明程序要做什么(动态)。 文法是阐述语法规则的工具,是形式语言理论基础。
6、文法的等价:若L(G1)=L(G2),则称文法G1 和G2是等价的。 课堂作业:P44 2
20
3.4 文法的类型
Chomsky将文法分四类(对产生式施加不同限制 ): 1. 0型文法(短语文法):对任一产生式α →β , 都有α ∈(VN∪VT)+且至少含一个非终结符, β ∈(VN∪VT)* 2. 1型文法(上下文有关文法):对任一产生式 α →β ,都有|β |≥|α |, 仅仅 A→ε 除外。 3. 2型文法(上下文无关文法) :对任一产生式 α →β ,都有α ∈VN , β ∈(VN∪VT)* 4. 3型文法(正规文法):任一产生式α →β 的形 式都为
为语言的语法描述寻求工具 工具要对程序设计语言给出精确无二义的语法描述。 (严谨、简洁、易读) 形式工具--形式语言抽象地定义为一个数学系统。“形 式”是指这样的事实:语言的所有规则只以什麽符号串 能出现的方式来陈述。
6
3.2 符号和符号串
1、符号 字母表:元素的非空有穷集合。(符号集)
符号:字母表中的元素。
1
3.1 语言与文法的直观概念
1、语言 语言是由句子组成的集合,是由一组记号所构成的 集合。 汉语--所有符合汉语语法的句子的全体 英语--所有符合英语语法的句子的全体 程序设计语言--所有该语言的程序的全体 研究语言 : 每个句子构成的规律 每个句子的含义 每个句子和使用者的关系
15
或写成: G[S]:S→0S1 S→01
3、推导的定义 直接推导“” α →β 是文法G产生式,γ ,δ ∈V*,若v,w满足: v=γ α δ , w = γ βδ , 则说:v(应用规则α →β )直接产生w 或说:w是v的直接推导 或说:w直接归约到v 记作 v w
例:G: S→0S1, S→01 的直接推导:
0S10011 (v=0S1,w=0011,使用规则S→01,γ =0,δ =1) S 0S1 (v=S,w=0S1,使用规则S→0S1,γ =ε,δ = ε ) 0S100S11 (v=0S1,w=00S11,使用规则?)
16
例 文法G=(VN,VT,P,S) VN ={标识符,字母,数字} VT ={a,b,c,…x,y,z,0,1,…,9} P={<标识符>→<字母> <标识符>→<标识符><字母> <标识符>→<标识符><数字> <字母>→a,…, <字母>→z <数字>→0,…, <数字>→9 } S=<标识符> 思考:指出下面直接推导所使用的规则 ? ① <标识符> <标识符><字母> ② <标识符> <字母> <数字> <字母> <字母> <数字> ③ abc <数字> abc5
2
研究程序设计语言及研究的三个方面: 每个程序构成的规律(语法 Syntax) 每个程序的含义(语义 Semantics) 每个程序和使用者的关系(语用 Pragmatics)
语言三个方面定义: 语法 -- 表示构成语言句子的wk.baidu.com个记号之间的组合规 律 语义 -- 表示按照各种表示方法所表示的各个记号的 特定含义。(各个记号和记号所表示的对象之间的 关系) 语用 --表示在各个记号所出现的行为中,它们的来 源、使用和影响。
补讲:终端符与非终端符 思考:“我是大学生”是否是该语言的句子?
4
语法规则
(文法)
① ② ③ ④ ⑤ ⑥ ⑦
〈句子〉::= 〈主语〉〈谓语〉 〈主语〉::= 〈代词〉|〈名词〉 〈代词〉::= 你 | 我 | 他 〈名词〉::= 王明 | 大学生 | 工人 | 英语 〈谓语〉::= 〈动词〉〈直接宾语〉 〈动词〉::= 是 | 学习 〈直接宾语〉::= 〈代词〉|〈名词〉
17
+ 和 *
若存在v =w0 w1 ... wn=w, (n>0) 则称v推导出(产生)w(推导长度为n), 或称w归约到v. 记作 v + w + * 若有v w,或v=w,则记为v w
例:G: S→0S1, S→01
0S1 00S11 000S111 00001111 * 也记作 0S1 00001111 + 和 * 的区别? 思考:
18
+ 即 0S1 00001111
4、文法的句型、句子的定义 句型:设G[S]是一文法,如果符号串x是从识别符号 * 推导出来的,即 S x,则称x是文法G[S]的句型。 句子:x仅由终结符号组成(即S * x,且x∈VT*), 则称x是G[S]的句子。 例:G: S→0S1, S→01 S 0S1 00S11 000S11100001111
第 3章
文法和语言
考查重点 1. 基本概念 : 文法;推导/归约;句型;句子; 语言;文法的二义性;文法递归;语法树; 短语;直接短语;句柄;正规文法;上下文 无关文法。 2. 基本方法 构造句型的推导/归约,规范推导/规范归约 画出指定句型的语法树 判别文法的二义性 给出句型的短语、直接短语、句柄。 文法与语言的互求(较简单)
注意: ① 符号串中的符号排列是有顺序的. ② 可以用字母表示符号串,如 x=aaca
8
2)串的头与尾 如果 z = xy 是一符号串,那么: x 是 z 的头,y 是 z 的尾; 如果 x 非空,那么 y 是固有尾;如果 y 非空, 那么 x 是固有头。 例:设 z = abc, 那么 z 的头是: ε ,a ,ab , abc(固有头呢?) z 的尾是: ε ,c ,bc , abc(固有尾呢?) 3)串的几种表示法(x,z是符号串,t是符号): z = x… x 是符号串 z 的头 z = …x… x 在符号串z 中某处出现 z = t… 符号 t 是 符号串 z 的第一个符号
11
3.3 文法和语言的形式定义
1、规则(重写规则、产生式或生成式): 是形如α →β 或α ∷=β 的(α ,β )有序对,其 中α 是某字母表V的正闭包V+中的一个符号,β 是 V*中的一个符号。(α ∈V+,β ∈V* why?) α 称为规则的左部(或生成式的左部)。 β 称为规则的右部(或生成式的右部)。 例:
A→aB或A→a,A∈VN ,B∈VN ,a∈VT (右线性文法) A→Ba或A→a,A∈VN ,B∈VN ,a∈VT (左线性文法) 思考:四种文法之间的关系?
21
四种文法之间的逐级“包含”关系
0型文法 1型文法 2型文法 3型文法
22
例:判断下列文法的类型
1: 文法G[S]: S→aSBE S→aBE EB→BE aB→ab bB→bb bE→be eE→ee S→aB|bA A→a|aS|bAA B→b|bS|aBB S→0A|1B|0 A→0A|1B|0S B→1B|1|0
3
2、文法 文法:仅仅涉及语言句子的结构描述。 以自然语言为例(用 EBNF 描述一种语言:)
〈句子〉::= 〈主语〉〈谓语〉 〈主语〉::= 〈代词〉|〈名词〉 〈代词〉::= 你 | 我 | 他 〈名词〉::= 王明 | 大学生 | 工人 | 英语 〈谓语〉::= 〈动词〉〈直接宾语〉 〈动词〉::= 是 | 学习 〈直接宾语〉::= 〈代词〉|〈名词〉
14
文法习惯上只将产生式写出。并有如下约定: ① 第一条产生式的左部是开始符号 ② 用尖括号括起的是非终结符,否则为终结符。或 者大写字母表示非终结符,小写字母表示终结符 ③ G可写成G[S],其中S是开始符号
例3.1 文法G=(VN,VT,P,S) VN = { S }, VT ={ 0, 1 } P={ S→0S1, S→01 } S为开始符号 可写成: G:S→0S1 S→01
相关文档
最新文档