编译原理第三章文法和语言
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
符号串的连接:设和是符号串,它们 的连接是把的符号写在的符号之后得 到的符号串。例,若=NPU, =1108,则 =NPU1108, =1108NPU
2020/4/5
18
符号串的方幂:设是符号串,把自身 连接n次得到符号串,即=…, 称为符号串的方幂,写作=n。
符号串集合:若集合A中的一切元素都是 某字母表上的符号串,则称A为字母表上 的符号串集合。
2020/4/5
24
得到句子“我是大学生”的全部动作过程是 :
<句子><主语><谓语> <代词><谓语> 我<谓语> 我<动词><直接宾语> 我是<直接宾语> 我是<名词> 我是大学生
2020/4/5
25
“我是大学生”的构成是符合上述规则
– 语法规则
规定了如何从单词符号来形成语法单位 现在多数程序语言使用上下文无关文法来描述语
法规则 语言的词法规则和语法规则定义了程序的形式结
构,是判断输入字符串是否构成一个形式上正确 的程序的依据
例,对于一个PASCAL程序来说,一个上下文无 关文法可以定义 A:=B+C 是合乎语法的,
而A:=B+ 是不合乎语法的。
第三章 文法和语言
2020/4/5
1
课前思考
◇ 高级语言有哪些一般特性? ◇ 你所见到的程序设计语言的手册或语言 标准是怎样陈述语言的语法和语义的? ◇ 学习编译程序为什么要研究语言的描述 问题?
2020/4/5
2
学习目标
本章目的是为语言的语法描述寻求工具
◇ 掌握对源程序给出精确无二义(严谨、 简洁、易读)的语法描述手段之一——文 法。
语义
– 对于一个语言来说,不仅要给出它的词法、 语法规则,而且要定义它的单词符号和语法 单位的意义
– 离开语义,语言只是一堆符号的集合
– 各种语言中有形式上完全相同的语法单位, 含义却不尽相同
– 对某种语言,可以定义一个程序的意义的一 组规则称为语义规则
– 目前,大多数编译程序使用基于属性文法的 语法制导翻译方法来分析语义
2020/4/5
5
知识结构
2020/4/5
6
引言和预备知识
高级语言
– 程序语言是一个记号系统 – 语法 – 语义
语法
– 任何语言程序都可以看成是一定字符集(字 母表)上的字符串
– 语法使得这串字符形成一个形式上正确的程 序
– 语法=词法规则+语法规则
例如:0.5*x1+c
– 0.5、x1、c、*、+是语言的单词符号 – 0.5*x1+c是语言的语法单位
3.1 文法的直观概念
文法的定义∶对语言结构的描述和定 义,即在形式上用来描述和规定语言结 构的称为“文法”(或“语法”)。
2020/4/5
22
比如:“我是大学生。”是汉语的一个句子
汉语句子可以是由主语后随谓语而成,构成谓 语的是动词和直接宾语 <句子>::=<主语><谓语> <主语>::=<代词>|<名词> <代词>::= 我 | 你 | 他 <名词>::= 王明 | 大学生 | 工人 | 英语 <谓语>::=<动词><直接宾语> <动词>::= 是 | 学习 <直接宾语>::=<代词>|<名词>
词法
– 单词符号
语言中具有独立意义的最基本结构
– 词法规则
词法规则规定了字母表中哪些字符串是单词符号 单词符号一般包括:常数、标识符、基本字、算
符、界限符等
– 我们用正规式和有限自动机理论来描述词法 结构和进行词法分析
语法
– 单词符号 – 语法单位
表达式、子句、语句、函数、过程、程序
2020/4/5
14
字母表:是元素的非空有穷集合,把字 母表中的元素称为符号,因此字母表也 称符号集。例,{a,b,c,+,﹒}就是 含有5个元素的一个字母表。一般用∑和 V来表示
符号:是语言当中最基本的不可再分的 单位
2020/4/5
15
符号串:字母表中的符号所组成的任何 有穷序列。例,V={a,b,c}是一个字母 表,则a,b,c,aa,ab,bc,abc等等都 是V上的符号串
◇ 熟练使用文法定义程序设计语言的单词 和语法成分
◇ 对形式语言的理论有一个初步基础
2020/4/5
3
学习指南
◇ 什么是文法,什么是它定义的语言? ◇ 在乔姆斯基(Chomsky)的文法类型中,我
们为什么关注上下文无关文法? ◇ 什么是语法分析?语法分析方法的分类?
2020/4/5
4
难重点
关于文法和语言的概念是形式语言的理 论基础,形式语言抽象地定义为一个数 学系统。“形式”是指这样的事实:语 言的所有规则只以什么符号串能出现的 方式来陈述。这里介绍的语言的语法描 述工具正是这样的系统。
2020/4/5
Baidu Nhomakorabea
23
一旦有了一组规则以后,我们可以按照如下 方式用它们去推导或产生句子。我们开始去 找::=左端的带有〈句子〉的规则并把它表示 成::=右端的符号串
规则中的“::=”也常用“”表示,含义是 使用一条规则,代替=>左边的某个符号,产 生右端的符号串。
注意∶文法中,描述某个特定的语法成分的 规则可能不只一条。
对于高级程序设计语言及其编译程序来 说,语言的语法定义是很重要的。本章 主要介绍语法结构的形式描述问题,编 译原理的主要内容也可以归纳为应用形 式语言理论,并将它贯穿于词法分析和 语法分析两个阶段
3.2 符号和符号串
任何一种语言都是由该语言的基本符 号组成的符号串的集合。 基本符号集 任何语言的单词符号就是定义在它的字 符集上的字符串 该语言的任何语句就是定义在其单词符 号集上的单词串(符号串)
2020/4/5
19
两个符号串集合A和B的乘积(连接): AB={| A且 B}
注:1)串集的自身乘积称作串集的方幂 2)A0={ɛ}
字母表V的n次方幂是字母表V上所有长 度为n的串集
2020/4/5
20
字母表V的闭包V*和正闭包V+:
字母表上的语言,是字 母表上正闭包的子集。
2020/4/5 21
空串:不含有任何符号的串称为空串, 记作
2020/4/5
16
句子:字母表上符合某种规则构成的串
语言:字母表上句子的集合
注:约定用a, b, c…表示符号;用, , …表示符号串;用A, B, C表示其集合
符号串的长度:如果某符号串中有m个 符号,则其长度为m,记为||=m。 例,|abc|=3 的长度为0
2020/4/5
18
符号串的方幂:设是符号串,把自身 连接n次得到符号串,即=…, 称为符号串的方幂,写作=n。
符号串集合:若集合A中的一切元素都是 某字母表上的符号串,则称A为字母表上 的符号串集合。
2020/4/5
24
得到句子“我是大学生”的全部动作过程是 :
<句子><主语><谓语> <代词><谓语> 我<谓语> 我<动词><直接宾语> 我是<直接宾语> 我是<名词> 我是大学生
2020/4/5
25
“我是大学生”的构成是符合上述规则
– 语法规则
规定了如何从单词符号来形成语法单位 现在多数程序语言使用上下文无关文法来描述语
法规则 语言的词法规则和语法规则定义了程序的形式结
构,是判断输入字符串是否构成一个形式上正确 的程序的依据
例,对于一个PASCAL程序来说,一个上下文无 关文法可以定义 A:=B+C 是合乎语法的,
而A:=B+ 是不合乎语法的。
第三章 文法和语言
2020/4/5
1
课前思考
◇ 高级语言有哪些一般特性? ◇ 你所见到的程序设计语言的手册或语言 标准是怎样陈述语言的语法和语义的? ◇ 学习编译程序为什么要研究语言的描述 问题?
2020/4/5
2
学习目标
本章目的是为语言的语法描述寻求工具
◇ 掌握对源程序给出精确无二义(严谨、 简洁、易读)的语法描述手段之一——文 法。
语义
– 对于一个语言来说,不仅要给出它的词法、 语法规则,而且要定义它的单词符号和语法 单位的意义
– 离开语义,语言只是一堆符号的集合
– 各种语言中有形式上完全相同的语法单位, 含义却不尽相同
– 对某种语言,可以定义一个程序的意义的一 组规则称为语义规则
– 目前,大多数编译程序使用基于属性文法的 语法制导翻译方法来分析语义
2020/4/5
5
知识结构
2020/4/5
6
引言和预备知识
高级语言
– 程序语言是一个记号系统 – 语法 – 语义
语法
– 任何语言程序都可以看成是一定字符集(字 母表)上的字符串
– 语法使得这串字符形成一个形式上正确的程 序
– 语法=词法规则+语法规则
例如:0.5*x1+c
– 0.5、x1、c、*、+是语言的单词符号 – 0.5*x1+c是语言的语法单位
3.1 文法的直观概念
文法的定义∶对语言结构的描述和定 义,即在形式上用来描述和规定语言结 构的称为“文法”(或“语法”)。
2020/4/5
22
比如:“我是大学生。”是汉语的一个句子
汉语句子可以是由主语后随谓语而成,构成谓 语的是动词和直接宾语 <句子>::=<主语><谓语> <主语>::=<代词>|<名词> <代词>::= 我 | 你 | 他 <名词>::= 王明 | 大学生 | 工人 | 英语 <谓语>::=<动词><直接宾语> <动词>::= 是 | 学习 <直接宾语>::=<代词>|<名词>
词法
– 单词符号
语言中具有独立意义的最基本结构
– 词法规则
词法规则规定了字母表中哪些字符串是单词符号 单词符号一般包括:常数、标识符、基本字、算
符、界限符等
– 我们用正规式和有限自动机理论来描述词法 结构和进行词法分析
语法
– 单词符号 – 语法单位
表达式、子句、语句、函数、过程、程序
2020/4/5
14
字母表:是元素的非空有穷集合,把字 母表中的元素称为符号,因此字母表也 称符号集。例,{a,b,c,+,﹒}就是 含有5个元素的一个字母表。一般用∑和 V来表示
符号:是语言当中最基本的不可再分的 单位
2020/4/5
15
符号串:字母表中的符号所组成的任何 有穷序列。例,V={a,b,c}是一个字母 表,则a,b,c,aa,ab,bc,abc等等都 是V上的符号串
◇ 熟练使用文法定义程序设计语言的单词 和语法成分
◇ 对形式语言的理论有一个初步基础
2020/4/5
3
学习指南
◇ 什么是文法,什么是它定义的语言? ◇ 在乔姆斯基(Chomsky)的文法类型中,我
们为什么关注上下文无关文法? ◇ 什么是语法分析?语法分析方法的分类?
2020/4/5
4
难重点
关于文法和语言的概念是形式语言的理 论基础,形式语言抽象地定义为一个数 学系统。“形式”是指这样的事实:语 言的所有规则只以什么符号串能出现的 方式来陈述。这里介绍的语言的语法描 述工具正是这样的系统。
2020/4/5
Baidu Nhomakorabea
23
一旦有了一组规则以后,我们可以按照如下 方式用它们去推导或产生句子。我们开始去 找::=左端的带有〈句子〉的规则并把它表示 成::=右端的符号串
规则中的“::=”也常用“”表示,含义是 使用一条规则,代替=>左边的某个符号,产 生右端的符号串。
注意∶文法中,描述某个特定的语法成分的 规则可能不只一条。
对于高级程序设计语言及其编译程序来 说,语言的语法定义是很重要的。本章 主要介绍语法结构的形式描述问题,编 译原理的主要内容也可以归纳为应用形 式语言理论,并将它贯穿于词法分析和 语法分析两个阶段
3.2 符号和符号串
任何一种语言都是由该语言的基本符 号组成的符号串的集合。 基本符号集 任何语言的单词符号就是定义在它的字 符集上的字符串 该语言的任何语句就是定义在其单词符 号集上的单词串(符号串)
2020/4/5
19
两个符号串集合A和B的乘积(连接): AB={| A且 B}
注:1)串集的自身乘积称作串集的方幂 2)A0={ɛ}
字母表V的n次方幂是字母表V上所有长 度为n的串集
2020/4/5
20
字母表V的闭包V*和正闭包V+:
字母表上的语言,是字 母表上正闭包的子集。
2020/4/5 21
空串:不含有任何符号的串称为空串, 记作
2020/4/5
16
句子:字母表上符合某种规则构成的串
语言:字母表上句子的集合
注:约定用a, b, c…表示符号;用, , …表示符号串;用A, B, C表示其集合
符号串的长度:如果某符号串中有m个 符号,则其长度为m,记为||=m。 例,|abc|=3 的长度为0