编译原理课件第2章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
n
2.3 2.3程序语言的语法描述
5、语言
V0 = {ε}
③ V*=V0 ∪ V1 ∪ V2 ∪ V3 ∪ … ④ V+=VV*
中的每个符号串都是由V中的符号串经有限次连接而成的。 有限次连接而成的 注:V*中的每个符号串都是由V中的符号串经有限次连接而成的。
例: ∑={a,b}, U={ab,b} V={aa,bb} U V= {ab,b} {aa,bb}={abaa,abbb,baa,bbb} {a,b}*={a,b}0 ∪{a,b}1 ∪{a,b}2 ∪...... ∑*= ={ε,a,b,ab,aa,bb,ba......}
2.3 2.3程序语言的语法描述
3、上下文无关文法G的形式定义 上下文无关文法G 是一个四元组(V G是一个四元组(VT,VN,S,P)
终结符号:描述单词符号,组成语言的基本符号, 终结符号:描述单词符号,组成语言的基本符号,是一个 语言的不可再分的基本符号。 语言的不可再分的基本符号。 例如:基本字,标识符,常数,算符,界符等. 例如:基本字,标识符,常数,算符,界符等. 非终结符号集, VN——非终结符号集,非空有限集 非终结符号集 VN∩ VT=Ф
2.3 2.3程序语言的语法描述
开始符号, S——开始符号,一个特殊的非终结符号 开始符号
至少必须在某个产 生式的左部出现一 次
产生式集合, P——产生式集合,有限集 产生式集合
产生式:定义语法范畴的一种书写规则. 产生式:定义语法范畴的一种书写规则. 形式: 形式:A α A∈VN, α∈(VT∪VN)* 注: • “ ”: “定义为” “|”: “或” • 非终结符号:用大写字母A、B、C…或汉语组代表 终结符:用小写字母…代表
}、Ф 注:区分: ε 、{ε}、 空集Ф ={}:不含任何元素的集合 Ф
2.3 2.3程序语言的语法描述
2、(连接)积:UV={αβ|α∈ U&β∈ V } 、(连接) 连接 ∈ ∈ U、V⊆ ∑* ① UV不一定等于 VU, 不一定等于 ② Vn=VV…V V的闭包
V的正则闭包 n个 个
但(UV)W=U(VW)
2.3 2.3程序语言的语法描述
例1:上下文无关文法G:E i | EAE : A +|*
G[E] 非终结符号: E A E,A 开始符述
例2:算术表达式的文法
标识符(id)(常量、变量)是表达式 常量、变量 是表达式 是表达式(E); 标识符 常量 ; 表达式加一个表达式是表达式; 表达式加一个表达式是表达式; 表达式减一个表达式是表达式; 表达式减一个表达式是表达式; 表达式乘一个表达式是表达式; 表达式乘一个表达式是表达式; 表达式除一个表达式是表达式; 表达式除一个表达式是表达式; 表达式加上括号是表达式; 表达式加上括号是表达式; P: E id|E+E|E-E|E*E|E/E|(E) E id E E+E E E-E E E*E E E/E E (E)
上下文无关文法: 上下文无关文法: 所定义的语法范畴(或语法单位) 所定义的语法范畴(或语法单位)是完全独立 于这种范畴可能出现的环境的一种文法 的一种文法。 于这种范畴可能出现的环境的一种文法。
2.3 2.3程序语言的语法描述
语法的类比: 2、文法——语法的类比: 文法 语法的类比
分析: 分析:The grey wolf will eat the goat . 句子 主语 冠词 形容词 名词 助动词 The grey wolf will 谓语 动词 动词原形 eat 直接宾语 冠词 the 名词 goat
2.3 2.3程序语言的语法描述
基本概念
1、 : 、 ∑
符号: 符号: 有穷字母表。 有穷字母表。 ∑中的每个元素。 中的每个元素。
由 ∑上的符号串: ∑中的符号所构成的一个有穷序列。 上的符号串: 中的符号所构成的一个有穷序列。 ε: ∑* : 空字,不包含任何符号的序列。 空字,不包含任何符号的序列。 ∑上的所有符号串的全体,包括ε。 上的所有符号串的全体,包括ε
第2章 高级语言及其语法描述
2.1 程序语言的定义 高级语言的一般特性( 2.2 高级语言的一般特性(略) 2.3 程序语言的语法描述
2.1 程序语言的定义
自然语言与计算机语言的区别与联系: 自然语言与计算机语言的区别与联系:
自然语言( 自然语言(1)人与人的通讯工具 (2)语义:由环境、背景知识、语气等决定 语义:由环境、背景知识、 二义性(常有)——难以形式化 二义性(常有)——难以形式化 计算机系统间、 计算机语言 (1)计算机系统间、人机间通讯工具 (2)具有严格的语法、语义 具有严格的语法、 ——易于形式化(严格) ——易于形式化(严格) 易于形式化 计算机程序语言——一个记号系统, 计算机程序语言——一个记号系统, ——一个记号系统 类似于自然语言,由语法+ 类似于自然语言,由语法+语义定义
语法规则, 语法规则,开始符号 终结符号集 VT={the,grey,wolf,will,eat,goat} 句子>,<主语 主语>,<谓语 谓语>,<冠词 冠词>, 非终结符号集 VN={<句子 句子 主语 谓语 冠词 <形容词 形容词>,<名词 名词>,<动词 动词>,<直接宾 形容词 名词 动词 直接宾 助动词>,<动词原形 动词原形>} 语>,<助动词 助动词 动词原形 句子> <主语 主语><谓语 谓语>,…} 语法规则集 P={<句子 句子 主语 谓语 开始符号 S=<句子 句子> 句子
<动词 动词><直接宾语 直接宾语> 动词 直接宾语 <助动词 助动词><动词原形 动词原形> 助动词 动词原形 will <动词原形 动词原形> 动词原形 <冠词 冠词><名词 名词> 冠词 名词 wolf <名词> 名
2.3 2.3程序语言的语法描述
B、句子的语法组成——终结符号集,非终结符号集, 句子的语法组成——终结符号集,非终结符号集,
例:E id | E+E | E-E | E*E | E/E | (E) (i+i)
E⇒(E) ⇒ (E+E) ⇒(i+E) ⇒(i+i)
该推导过程证明了(i+i)是文法G所定义的一个算术表达式。 该推导过程证明了(i+i)是文法G所定义的一个算术表达式。 (i 是文法 我们可以从E出发,进行一系列的推导, 注:我们可以从E出发,进行一系列的推导,推出种种不 同的算术表达式出来. 同的算术表达式出来.
+ ∑+= {a,b} ={a,b}{a,b}* ={a,b} {ε,a,b,ab,aa,bb,ba......} ={a,b,ab,aa,bb,ba......}
2.3 2.3程序语言的语法描述
一、上下文无关文法
1、定义: 定义:
描述语法规则
文法:描述语言的语法结构的形式规则(即语法规则)。 文法:描述语言的语法结构的形式规则(即语法规则)。 例:英语中,一般句子是由主——谓二部分构成。 英语中,一般句子是由主 谓二部分构成。
终结符号集, VT——终结符号集,非空有限集 终结符号集
非终结符:代表语法范畴, 非终结符:代表语法范畴,一个非终结符代表一个一定的语 法概念,每个非终结符表示一定符号串的集合。 法概念,每个非终结符表示一定符号串的集合。 例如:算术表达式,布尔表达式,赋值句,分程序,过程等. 例如:算术表达式,布尔表达式,赋值句,分程序,过程等.
2.3 2.3程序语言的语法描述
C、句子的派生(推导)——根据规则 句子的派生(推导)
<句子 ⇒ <主语 句子>⇒ 主语 主语><谓语 谓语> 句子 谓语 ⇒ <冠词 冠词><形容词 形容词><名词 名词><谓语 谓语> 冠词 形容词 名词 谓语 ⇒ the ⇒ the ⇒ the ⇒… ⇒ the grey wolf will eat the goat <形容词 形容词><名词 名词><谓语 谓语> 形容词 名词 谓语 grey grey <名词 名词><谓语 谓语> 名词 谓语 wolf <谓语 谓语> 谓语
动词><直接宾语 直接宾语> ⇒ the grey wolf <动词 动词 直接宾语
2.3 2.3程序语言的语法描述
D、句子的语义要求
<句子 句子> 句子 the grey wolf will eat the goat the grey wolf will eat the wolf the grey goat will eat the wolf the grey goat will eat the goat 符合语法且符合语义的句子仅是: 符合语法且符合语义的句子仅是: the grey wolf will eat the goat
2.1 程序语言的定义
一、语法
一组规则,使用它可以形成和产生一个合式的程序, 一组规则,使用它可以形成和产生一个合式的程序,则 这组规则称为语法。 这组规则称为语法 词法规则——单词符号的形成规则,即规定了字母表中 单词符号的形成规则, 词法规则 单词符号的形成规则 哪样的字符串是一个单词符号。 哪样的字符串是一个单词符号。 单词符号——语言中具有独立意义的最基本结构。 语言中具有独立意义的最基本结构。 单词符号 语言中具有独立意义的最基本结构 语法规则——语法单位的形成规则,即规定了如何从单 语法单位的形成规则, 语法规则 语法单位的形成规则 单词符号形成更大的结构(即语法单位)。 单词符号形成更大的结构(即语法单位)。
2.3 2.3程序语言的语法描述
注:符号的含义 “⇒”: 表示“直接推出”,即仅推出一步。 ⇒ : 表示“直接推出” 即仅推出一步。
β,仅当 仅当A αAβ ⇒αγβ,仅当A α,β∈(V 且α,β∈(VT∪VN)* γ是一个产生式, 是一个产生式,
则称该序列是从α “推导”: α1 ⇒ α2 ⇒ … ⇒ αn,则称该序列是从α1 推导” 若 推导 至αn的一个推导(α1可推导出αn) 的一个推导( 可推导出α + α1 ⇒ αn: 从α1出发,经一步或若干步,可推导出 n 出发, 一步或若干步,可推导出α * α1 ⇒ αn: 从α 出发,经过0步或若干步,可推导出 出发,经过0 若干步,可推导出α
2.3 2.3程序语言的语法描述
4、文法与语言的关系
一个上下文无关文法如何定义一个语言呢? 一个上下文无关文法如何定义一个语言呢? 中心思想:从文法的开始符号出发, 中心思想:从文法的开始符号出发,反复连续使用产 生式,对非终结符施行替换和展开。 生式,对非终结符施行替换和展开。
2.3 2.3程序语言的语法描述
定义了程序的形式结构, 定义了程序的形式结构,是判断输入字符串是否 构成一个形式上(即合式)正确程序的依据。 构成一个形式上(即合式)正确程序的依据。
2.1 程序语言的定义
二、语义
1、语义规则:一组规则,使用它可以定义一个程序的意义 。 、语义规则:一组规则, 离开语义,语言只不过是一堆符号的集合; 离开语义,语言只不过是一堆符号的集合;在许多语言中 有着形式上完全相同的语法单位,但含义却不尽相同。 有着形式上完全相同的语法单位,但含义却不尽相同。 2、注意:阐明语义要比阐明语法难得多,现在还没有一 注意:阐明语义要比阐明语法难得多, 种公认的形式系统,借助于它可以自动地构造 种公认的形式系统,借助于它可以自动地构造 自动地 出实用的编译程序。 出实用的编译程序。 本书 基于属性文法的语法制导翻译方法 较接近形式化
2.3 2.3程序语言的语法描述
A、产生句子的规则——从产生语言的角度 A、产生句子的规则——从产生语言的角度 产生句子的规则——
<句子 句子> <主语 主语><谓语 谓语> 句子 主语 谓语 <主语 主语> 主语 <冠词 冠词> 冠词 <谓语 谓语> 谓语 <动词 动词> 动词 <助动词 助动词> 助动词 <直接宾语 直接宾语> 直接宾语 <名词 名词> 名词 the <形容词 形容词> 形容词 (1) grey (5) (6) eat (9) goat <冠词 冠词><形容词 <名词 (2) 形容词> 名词 名词> 冠词 形容词
n
2.3 2.3程序语言的语法描述
5、语言
V0 = {ε}
③ V*=V0 ∪ V1 ∪ V2 ∪ V3 ∪ … ④ V+=VV*
中的每个符号串都是由V中的符号串经有限次连接而成的。 有限次连接而成的 注:V*中的每个符号串都是由V中的符号串经有限次连接而成的。
例: ∑={a,b}, U={ab,b} V={aa,bb} U V= {ab,b} {aa,bb}={abaa,abbb,baa,bbb} {a,b}*={a,b}0 ∪{a,b}1 ∪{a,b}2 ∪...... ∑*= ={ε,a,b,ab,aa,bb,ba......}
2.3 2.3程序语言的语法描述
3、上下文无关文法G的形式定义 上下文无关文法G 是一个四元组(V G是一个四元组(VT,VN,S,P)
终结符号:描述单词符号,组成语言的基本符号, 终结符号:描述单词符号,组成语言的基本符号,是一个 语言的不可再分的基本符号。 语言的不可再分的基本符号。 例如:基本字,标识符,常数,算符,界符等. 例如:基本字,标识符,常数,算符,界符等. 非终结符号集, VN——非终结符号集,非空有限集 非终结符号集 VN∩ VT=Ф
2.3 2.3程序语言的语法描述
开始符号, S——开始符号,一个特殊的非终结符号 开始符号
至少必须在某个产 生式的左部出现一 次
产生式集合, P——产生式集合,有限集 产生式集合
产生式:定义语法范畴的一种书写规则. 产生式:定义语法范畴的一种书写规则. 形式: 形式:A α A∈VN, α∈(VT∪VN)* 注: • “ ”: “定义为” “|”: “或” • 非终结符号:用大写字母A、B、C…或汉语组代表 终结符:用小写字母…代表
}、Ф 注:区分: ε 、{ε}、 空集Ф ={}:不含任何元素的集合 Ф
2.3 2.3程序语言的语法描述
2、(连接)积:UV={αβ|α∈ U&β∈ V } 、(连接) 连接 ∈ ∈ U、V⊆ ∑* ① UV不一定等于 VU, 不一定等于 ② Vn=VV…V V的闭包
V的正则闭包 n个 个
但(UV)W=U(VW)
2.3 2.3程序语言的语法描述
例1:上下文无关文法G:E i | EAE : A +|*
G[E] 非终结符号: E A E,A 开始符述
例2:算术表达式的文法
标识符(id)(常量、变量)是表达式 常量、变量 是表达式 是表达式(E); 标识符 常量 ; 表达式加一个表达式是表达式; 表达式加一个表达式是表达式; 表达式减一个表达式是表达式; 表达式减一个表达式是表达式; 表达式乘一个表达式是表达式; 表达式乘一个表达式是表达式; 表达式除一个表达式是表达式; 表达式除一个表达式是表达式; 表达式加上括号是表达式; 表达式加上括号是表达式; P: E id|E+E|E-E|E*E|E/E|(E) E id E E+E E E-E E E*E E E/E E (E)
上下文无关文法: 上下文无关文法: 所定义的语法范畴(或语法单位) 所定义的语法范畴(或语法单位)是完全独立 于这种范畴可能出现的环境的一种文法 的一种文法。 于这种范畴可能出现的环境的一种文法。
2.3 2.3程序语言的语法描述
语法的类比: 2、文法——语法的类比: 文法 语法的类比
分析: 分析:The grey wolf will eat the goat . 句子 主语 冠词 形容词 名词 助动词 The grey wolf will 谓语 动词 动词原形 eat 直接宾语 冠词 the 名词 goat
2.3 2.3程序语言的语法描述
基本概念
1、 : 、 ∑
符号: 符号: 有穷字母表。 有穷字母表。 ∑中的每个元素。 中的每个元素。
由 ∑上的符号串: ∑中的符号所构成的一个有穷序列。 上的符号串: 中的符号所构成的一个有穷序列。 ε: ∑* : 空字,不包含任何符号的序列。 空字,不包含任何符号的序列。 ∑上的所有符号串的全体,包括ε。 上的所有符号串的全体,包括ε
第2章 高级语言及其语法描述
2.1 程序语言的定义 高级语言的一般特性( 2.2 高级语言的一般特性(略) 2.3 程序语言的语法描述
2.1 程序语言的定义
自然语言与计算机语言的区别与联系: 自然语言与计算机语言的区别与联系:
自然语言( 自然语言(1)人与人的通讯工具 (2)语义:由环境、背景知识、语气等决定 语义:由环境、背景知识、 二义性(常有)——难以形式化 二义性(常有)——难以形式化 计算机系统间、 计算机语言 (1)计算机系统间、人机间通讯工具 (2)具有严格的语法、语义 具有严格的语法、 ——易于形式化(严格) ——易于形式化(严格) 易于形式化 计算机程序语言——一个记号系统, 计算机程序语言——一个记号系统, ——一个记号系统 类似于自然语言,由语法+ 类似于自然语言,由语法+语义定义
语法规则, 语法规则,开始符号 终结符号集 VT={the,grey,wolf,will,eat,goat} 句子>,<主语 主语>,<谓语 谓语>,<冠词 冠词>, 非终结符号集 VN={<句子 句子 主语 谓语 冠词 <形容词 形容词>,<名词 名词>,<动词 动词>,<直接宾 形容词 名词 动词 直接宾 助动词>,<动词原形 动词原形>} 语>,<助动词 助动词 动词原形 句子> <主语 主语><谓语 谓语>,…} 语法规则集 P={<句子 句子 主语 谓语 开始符号 S=<句子 句子> 句子
<动词 动词><直接宾语 直接宾语> 动词 直接宾语 <助动词 助动词><动词原形 动词原形> 助动词 动词原形 will <动词原形 动词原形> 动词原形 <冠词 冠词><名词 名词> 冠词 名词 wolf <名词> 名
2.3 2.3程序语言的语法描述
B、句子的语法组成——终结符号集,非终结符号集, 句子的语法组成——终结符号集,非终结符号集,
例:E id | E+E | E-E | E*E | E/E | (E) (i+i)
E⇒(E) ⇒ (E+E) ⇒(i+E) ⇒(i+i)
该推导过程证明了(i+i)是文法G所定义的一个算术表达式。 该推导过程证明了(i+i)是文法G所定义的一个算术表达式。 (i 是文法 我们可以从E出发,进行一系列的推导, 注:我们可以从E出发,进行一系列的推导,推出种种不 同的算术表达式出来. 同的算术表达式出来.
+ ∑+= {a,b} ={a,b}{a,b}* ={a,b} {ε,a,b,ab,aa,bb,ba......} ={a,b,ab,aa,bb,ba......}
2.3 2.3程序语言的语法描述
一、上下文无关文法
1、定义: 定义:
描述语法规则
文法:描述语言的语法结构的形式规则(即语法规则)。 文法:描述语言的语法结构的形式规则(即语法规则)。 例:英语中,一般句子是由主——谓二部分构成。 英语中,一般句子是由主 谓二部分构成。
终结符号集, VT——终结符号集,非空有限集 终结符号集
非终结符:代表语法范畴, 非终结符:代表语法范畴,一个非终结符代表一个一定的语 法概念,每个非终结符表示一定符号串的集合。 法概念,每个非终结符表示一定符号串的集合。 例如:算术表达式,布尔表达式,赋值句,分程序,过程等. 例如:算术表达式,布尔表达式,赋值句,分程序,过程等.
2.3 2.3程序语言的语法描述
C、句子的派生(推导)——根据规则 句子的派生(推导)
<句子 ⇒ <主语 句子>⇒ 主语 主语><谓语 谓语> 句子 谓语 ⇒ <冠词 冠词><形容词 形容词><名词 名词><谓语 谓语> 冠词 形容词 名词 谓语 ⇒ the ⇒ the ⇒ the ⇒… ⇒ the grey wolf will eat the goat <形容词 形容词><名词 名词><谓语 谓语> 形容词 名词 谓语 grey grey <名词 名词><谓语 谓语> 名词 谓语 wolf <谓语 谓语> 谓语
动词><直接宾语 直接宾语> ⇒ the grey wolf <动词 动词 直接宾语
2.3 2.3程序语言的语法描述
D、句子的语义要求
<句子 句子> 句子 the grey wolf will eat the goat the grey wolf will eat the wolf the grey goat will eat the wolf the grey goat will eat the goat 符合语法且符合语义的句子仅是: 符合语法且符合语义的句子仅是: the grey wolf will eat the goat
2.1 程序语言的定义
一、语法
一组规则,使用它可以形成和产生一个合式的程序, 一组规则,使用它可以形成和产生一个合式的程序,则 这组规则称为语法。 这组规则称为语法 词法规则——单词符号的形成规则,即规定了字母表中 单词符号的形成规则, 词法规则 单词符号的形成规则 哪样的字符串是一个单词符号。 哪样的字符串是一个单词符号。 单词符号——语言中具有独立意义的最基本结构。 语言中具有独立意义的最基本结构。 单词符号 语言中具有独立意义的最基本结构 语法规则——语法单位的形成规则,即规定了如何从单 语法单位的形成规则, 语法规则 语法单位的形成规则 单词符号形成更大的结构(即语法单位)。 单词符号形成更大的结构(即语法单位)。
2.3 2.3程序语言的语法描述
注:符号的含义 “⇒”: 表示“直接推出”,即仅推出一步。 ⇒ : 表示“直接推出” 即仅推出一步。
β,仅当 仅当A αAβ ⇒αγβ,仅当A α,β∈(V 且α,β∈(VT∪VN)* γ是一个产生式, 是一个产生式,
则称该序列是从α “推导”: α1 ⇒ α2 ⇒ … ⇒ αn,则称该序列是从α1 推导” 若 推导 至αn的一个推导(α1可推导出αn) 的一个推导( 可推导出α + α1 ⇒ αn: 从α1出发,经一步或若干步,可推导出 n 出发, 一步或若干步,可推导出α * α1 ⇒ αn: 从α 出发,经过0步或若干步,可推导出 出发,经过0 若干步,可推导出α
2.3 2.3程序语言的语法描述
4、文法与语言的关系
一个上下文无关文法如何定义一个语言呢? 一个上下文无关文法如何定义一个语言呢? 中心思想:从文法的开始符号出发, 中心思想:从文法的开始符号出发,反复连续使用产 生式,对非终结符施行替换和展开。 生式,对非终结符施行替换和展开。
2.3 2.3程序语言的语法描述
定义了程序的形式结构, 定义了程序的形式结构,是判断输入字符串是否 构成一个形式上(即合式)正确程序的依据。 构成一个形式上(即合式)正确程序的依据。
2.1 程序语言的定义
二、语义
1、语义规则:一组规则,使用它可以定义一个程序的意义 。 、语义规则:一组规则, 离开语义,语言只不过是一堆符号的集合; 离开语义,语言只不过是一堆符号的集合;在许多语言中 有着形式上完全相同的语法单位,但含义却不尽相同。 有着形式上完全相同的语法单位,但含义却不尽相同。 2、注意:阐明语义要比阐明语法难得多,现在还没有一 注意:阐明语义要比阐明语法难得多, 种公认的形式系统,借助于它可以自动地构造 种公认的形式系统,借助于它可以自动地构造 自动地 出实用的编译程序。 出实用的编译程序。 本书 基于属性文法的语法制导翻译方法 较接近形式化
2.3 2.3程序语言的语法描述
A、产生句子的规则——从产生语言的角度 A、产生句子的规则——从产生语言的角度 产生句子的规则——
<句子 句子> <主语 主语><谓语 谓语> 句子 主语 谓语 <主语 主语> 主语 <冠词 冠词> 冠词 <谓语 谓语> 谓语 <动词 动词> 动词 <助动词 助动词> 助动词 <直接宾语 直接宾语> 直接宾语 <名词 名词> 名词 the <形容词 形容词> 形容词 (1) grey (5) (6) eat (9) goat <冠词 冠词><形容词 <名词 (2) 形容词> 名词 名词> 冠词 形容词