《编译原理和技术》课程PPT教学课件:第十三章 函数式语言的编译

第十三章函数式语言的编译 本章内容 介绍一种简单的函数式编程语言SFP 介绍一种抽象机FAM,它的机器语言是SFP 语言的目标语言 介绍SFP各种语言构造到FAM的编译
第十三章 函数式语言的编译 本章内容 • 介绍一种简单的函数式编程语言SFP • 介绍一种抽象机FAM,它的机器语言是SFP 语言的目标语言 • 介绍SFP各种语言构造到FAM的编译

131函数式编程语言简介 13.1.1语言构造 函数是构建程序的基本成分 还提供一些机制用于构造更为复杂的函数 纯函数式语言禁止使用赋值语句,从而不会产生 副作用,其优点是具有引用透明性,有助于程序 的等式变换和推理 程序设计的任务就是定义函数 计算机按照所定义函数的相应表达式,根据计算 规则逐步计算,最后得到所需的结果
13.1 函数式编程语言简介 13.1.1 语言构造 • 函数是构建程序的基本成分 – 还提供一些机制用于构造更为复杂的函数 – 纯函数式语言禁止使用赋值语句,从而不会产生 副作用,其优点是具有引用透明性,有助于程序 的等式变换和推理 • 程序设计的任务就是定义函数 – 计算机按照所定义函数的相应表达式,根据计算 规则逐步计算,最后得到所需的结果

131函数式编程语言简介 语法论域和语法产生式 B:基值集,如布尔值、整数、.,用b示例 Op bint:二元算符集,如+,=,and,,用qpbm示例 O un 元算符集,如-,not,,,用opm示例 V:变量集,用ν示例 E:表达式集,用e示例 e>b v(opun el(ej opbin e,l (if e, then e? else e3) l(e1e2)∥函数应用 1(A.e)∥函数抽象,如入xx+1,即f(x)=x+1 (etrec v1==e1; v2==e2;.vu==en in eo ∥联立递归定义
13.1 函数式编程语言简介 • 语法论域和语法产生式 – B:基值集,如布尔值、整数、. . .,用b示例 – Opbin:二元算符集,如+, =, and, . . . , 用opbin示例 – Opun: 一元算符集,如−, not, . . .,用opun示例 – V :变量集,用v 示例 – E :表达式集,用e 示例 e → b | v | (opun e) | (e1 opbin e2 ) | (if e1 then e2 else e3 ) | (e1 e2 ) // 函数应用 | (v.e) // 函数抽象, 如x.x+1, 即f (x) = x+1 | (letrec v1== e1 ; v2== e2 ; . . . vn== en in e0 ) // 联立递归定义

131函数式编程语言简介 约定 e→bν(opme)…|(e1e2)|(xe) I (letrec v==e1; v2==e2;..Vn==en in eo) 函数应用有最高优先级并且左结合 算术和逻辑算符有通常的优先级 入抽象选择最大可能的语法表达式作为e的体e, 即延伸到表达式的结尾或碰到第一个不能配对的 右括号为止 n元函数写成v1…,vne的形式 把1…,tm实现为一次函数应用,而不是m次应用
13.1 函数式编程语言简介 • 约定 e → b | v | (opun e) | … | (e1 e2 ) | (v.e) | (letrec v1== e1 ; v2== e2 ; . . . vn== en in e0 ) – 函数应用有最高优先级并且左结合 – 算术和逻辑算符有通常的优先级 – 抽象选择最大可能的语法表达式作为v. e的体e, 即e延伸到表达式的结尾或碰到第一个不能配对的 右括号为止 – n元函数写成v1 … vn .e的形式 – 把fe1 … em实现为一次函数应用,而不是m次应用

131函数式编程语言简介 13.1.2参数传递机制 对于表达式e1e2,用按需调用的方式传递参数 值调用 换名调用 按需调用 又称惰性计算。从e1的计算开始,当第一次需要 e2时,计算它的值,也就计算这一次。其它访问 用第一次访问时计算的值。这种方式结合了前两 种方式的优点
13.1 函数式编程语言简介 13.1.2 参数传递机制 对于表达式e1e2,用按需调用的方式传递参数 – 值调用 – 换名调用 – 按需调用 又称惰性计算。从e1的计算开始,当第一次需要 e2时,计算它的值,也就计算这一次。其它访问 用第一次访问时计算的值。这种方式结合了前两 种方式的优点

131函数式编程语言简介 例1 letrecx== 2 ∫=λy.x+y F== Ng x g2 in Ff1 静态作用域,结果等于4 {x:2,f:yx+y,F:Agx.g2}是表达式2,px+y, λgx.g2和Ff1的计算环境 表达式e和它的计算环境u形成二元组(e,u),叫做 闭包。环境u用来保证e中的自由变量会被正确地 解释,因此环境u和变元e需要一起传递
13.1 函数式编程语言简介 • 例1 letrec x == 2; f == y. x + y; F == g x. g2 in F f 1 – 静态作用域,结果等于4 – {x :2, f : y. x + y, F : g x. g2}是表达式2, y.x+y, g x. g2和F f 1的计算环境 – 表达式e和它的计算环境u形成二元组(e, u),叫做 闭包。环境u用来保证e中的自由变量会被正确地 解释,因此环境u和变元e需要一起传递

131函数式编程语言简介 例2 letrec comp==nf.ng. xf(gx); F== 2x G== h==comp FG in(…)+F(…)+G(…) 函数可以作为函数的变元 函数也可以作为函数的结果 n元函数可作为高阶函数使用,当作用于m(m<n) 个变元时,结果是一个(n-m)元的函数
13.1 函数式编程语言简介 • 例2 letrec comp == f .g. x. f (gx); F == x. …; G == z. …; h == comp F G in h( ... ) + F( ... ) + G( ... ) – 函数可以作为函数的变元 – 函数也可以作为函数的结果 – n元函数可作为高阶函数使用, 当作用于m (m < n) 个变元时,结果是一个( n − m )元的函数

131函数式编程语言简介 13.13变量的自由出现和约束出现 在 letrec y=e1 = e in e中,等号 左边的v1,…,v是这些变量的定义性出现 在丸v1…n,e的丸n1…,n中的v,…,v是这些变量的 定义性出现 变量出现在其它地方都是引用性出现 引用性出现分成自由出现和约束出现 在Axy.(zx+)(+z)x中, 自由出现的变量:x,z 约束出现的变量:x,y,z
13.1 函数式编程语言简介 13.1.3 变量的自由出现和约束出现 – 在letrec v1== e1 ; v2== e2 ; . . . vn== en in e0中,等号 左边的v1 , …, vn是这些变量的定义性出现 – 在v1 … vn .e的v1 … vn中的v1 , …, vn是这些变量的 定义性出现 – 变量出现在其它地方都是引用性出现 – 引用性出现分成自由出现和约束出现 在 (x y. (z. x + z) (y + z ) ) x中, 自由出现的变量:x, z 约束出现的变量:x, y, z

132函数式语言的编译简介 概述 将按需调用语义和静态约束的函数式语言SFP的 程序编译成FAM的机器语言 FAM是一种抽象机,它有一个栈,生存期符合栈 式管理的所有变量都分配在栈中;它还有一个堆, 所有其它的变量都存在堆中 先用一连串的例子来启发后面从SFP程序到FAM 程序的编译描述
13.2函数式语言的编译简介 • 概述 – 将按需调用语义和静态约束的函数式语言SFP的 程序编译成FAM的机器语言 – FAM是一种抽象机,它有一个栈,生存期符合栈 式管理的所有变量都分配在栈中;它还有一个堆, 所有其它的变量都存在堆中 – 先用一连串的例子来启发后面从SFP程序到FAM 程序的编译描述

132函数式语言的编译简介 1321几个受启发的例子 例11+2 本表达式的结果是基值类型,可以放在栈上 但是表达式结果也可能是函数,它不能放在栈上 统一做法: 把程序表达式的结果统一存放在堆中,在栈顶用 个指针指向堆中的结果
13.2函数式语言的编译简介 13.2.1 几个受启发的例子 例1 1 + 2 – 本表达式的结果是基值类型,可以放在栈上 – 但是表达式结果也可能是函数,它不能放在栈上 – 统一做法: 把程序表达式的结果统一存放在堆中,在栈顶用 一个指针指向堆中的结果
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《Microsoft Access 2003》教程PPT:第9章 报表设计.ppt
- 北京大学远程教育:《计算机应用基础》课程PPT教学课件(专科)串讲(综合复习).pptx
- 计算机问题求解(PPT讲稿)B树.pptx
- 香港理工大学:INSTRUCTION SETS 指令.pptx
- 《计算机网络原理》课程教学资源(PPT课件讲稿)第二章 网络实现模型.ppt
- 上海交通大学:《软件开发》课程教学资源(PPT课件)第一讲 概述.ppt
- 香港浸会大学:《Data Communications and Networking》课程教学资源(PPT讲稿)Socket Programming Part II:Design of Server Software.ppt
- 中国科学技术大学:《网络算法学》课程教学资源(PPT课件)第六章 传输控制.ppt
- 西安电子科技大学:《MATLAB程序设计语言》课程教学资源(PPT讲稿)Chapter1 Matlab系统概述.ppt
- 清华大学:Mandarin Pronunciation Variation Modeling.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第7章 用户自定义函数.ppt
- 中国科学技术大学:《算法基础》课程教学资源(PPT课件讲稿)第七讲 顺序统计学(主讲人:吕敏).pptx
- 《Java语言程序设计》课程教学资源(PPT课件讲稿)第三章 面向对象特征.ppt
- Virtual Topologies - Faculty of Science, HKBU.ppt
- 《Adobe Photoshop CS》软件教程(PPT讲稿)第13章 使用路径.ppt
- 《软件开发》课程PPT教学课件:Chapter 16 异常处理 Exception Handling.ppt
- 西安电子科技大学:《计算机网络 Computer Networks》课程教学资源(PPT课件讲稿)基于CORBA的分布式平台(CORBA编程-Hello World例程).ppt
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第七章 网络安全.ppt
- 北京大学:浅谈计算机研究的层次与境界(李振华).pptx
- 南京大学:《计算机图形学》课程教学资源(PPT课件讲稿)计算机图形学引言(主讲:路通).ppt
- 四川大学:Object-Oriented Design and Programming(Java,PPT课件).ppt
- 安徽理工大学:《汇编语言》课程教学资源(PPT课件讲稿)第五章 循环与分支程序设计.ppt
- 《C程序设计》课程PPT教学课件(电子教案)第六章 函数.ppt
- 基于语义关联和信息增益的TFIDF改进算法研究.ppt
- Integrated analysis of regulatoryand metabolic networks revealsnovel regulatory mechanisms inSaccharomyces cerevisiae.ppt
- 山东大学:《计算机图形学》课程PPT教学课件(Programming with OpenGL)Part 3:Three Dimensions.ppt
- 《算法设计技巧与分析》课程教学资源(PPT讲稿)Lecture 8 贪婪法则 Greedy Approach.ppt
- 山西国际商务职业学院:《网页设计与制作》课程教学资源(PPT课件)第一章 网页设计基础知识.ppt
- 《多媒体教学软件设计》课程PPT教学课件:第13章 多媒体教学软件中脚本编程技巧.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)动态调度(Cont)、推断执行和ILP.ppt
- 香港浸会大学:《Experiencing Cluster Computing》Class 8 Case Studies.ppt
- 香港理工大学:Building Robust Wireless LAN for Industrial Control with DSSS-CDMA Cell Phone Network Paradigm.ppt
- International Trade Forms.ppt
- 因特网多媒体技术(PPT讲稿).ppt
- 长春工业大学:《电子商务》课程教学资源(PPT课件)第9章 网络鞋城前台页面.ppt
- 数据传送类指令(PPT讲稿).ppt
- Lower bound for sorting, radix sort.ppt
- 《ASP动态网页设计实用教程》教学资源(PPT课件讲稿)第8章 Web数据库基础.ppt
- 卷积码的概率译码(PPT讲稿).ppt
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第十章 下一代因特网.ppt