网站大量收购独家精品文档,联系QQ:2885784924

形式语义教材-Ch1 基本理论.doc

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
形式语义教材-Ch1 基本理论

第一章 理 论 基 础 § 1.1 引 言 1941年Church创建了Lambda演算理论。它是一个形式系统,可作为计算模型,如同Turing机可作为计算模型一样。Lambda演算形式系统主要由两部分组成:其一是合法表达式的形式系统,其二是变换规则的形式系统. Lambda演算系统可有多种。其主要区别在于构成Lambda演算形式系统的两个组成部分的具体定义上。不同的Lambda演算系统会得到一些不同的定理。Lambda演算系统如同Turing机系统一样,可描述任何一部分递归函数的计算过程。因此,Lambda演算系统也可视为一种算法语言系统。其中的Lambda表达式相当于语言的一个程序。程序如何执行,由Lambda演算系统的机制来确定。Lambda演算理论是函数式语言的基础,也是指称语义学的理论基础。 §1.2 Lambda 演算 纯Lambda表达式(以后简称λ表达式)是最小的一种表达式,主要由变量名和抽象符号λ以及括号等符号构成。若用X表示变量,用Exp表示纯Lambda表达式之集,则Exp集的定义如下。 定义 1.2.1. λ表达式 (1) x ∈Exp, 其中x是变量名。 (2) 若E1∈Exp, E2∈Exp, 则E1 E2 ∈Exp。 (3) 若E ∈Exp, x是变量, 则(x.E ∈Exp。 (4) 若E ∈Exp, 则 (E ) ∈Exp。 若用BNF表示法,则可描述如下(x ∈Var, E ∈Exp ): E ::= x | E1 E2 | (x.E | ( E ) 从上述定义可知纯(_表达式是非常小的表达式,以致于不能再小。但它将成为(_演算系统的基础。那么一个作为计算模型的形式系统应具备什么样的条件呢?很显然它起码应具备二个条件:其一是它有很强的功能,以致于能够描述复杂的计算过程;其二是它应非常小,以致于其语义是非常清楚的。当然实用性的系统,则应根据需求扩充相应的内容,但其前提是它们可变换为纯(_表达式的形式。 在我们这里Lambda演算系统主要是作为函数式语言和指称语义描述语言的基础。设L为被描述的语言,L0为描述L语义的语言,则我们称L0为元语言。显然,元语言不能是很复杂的,否则又可提出L0语言的语义是什么?因此,元语言的基础应非常简单。而所使用的实际元语言则应从简单语言逐步扩充而来,而且其语义是很清楚的。 在我们的(_表达式中没有常量部分,而且变量是广义的,即它代表的也可以是一函数。称形如(E1E2)的表达式为施用型表达式,称形如( x .E的表达式为抽象型表达式。表达式(E1E2)相当于通常的函数调用f(E),其中f是函数名。现在不一样的是E1不一定是一个函数名,可以是复杂的表达式,但必须是抽象表达式或代表函数的变量名,如((X.f(X))(((Y.Y)20 ),其中有三个施用型子表达式; ▲ ((Y.Y)20 ▲ f(X) ▲ ((X.f(X))( ((Y.Y)20 ) 抽象表达式主要是用来表示无名函数。通常的方法是首先定义函数名,然后再使用它,因此函数都有名,而抽象表达式则表示一无名函数。假设有函数说明func f(X)=X+1,则显然也可把上述函数的定义写成:f=(X.X+1,并且也能方便地表示哪个是函数名,哪个是形参名,哪部分是函数体,其中(表示其后的变量为形参变量。这种说明是定义了一个函数名f。如果不想定义函数名,那么应该怎么办?这好办,只要直接用表达式(X.X+1即可了。这就是抽象表达式的直接出因。我们称(x.E中的E表达式为上述抽象表达式的体部分。 为了简单起见,以后将(XY)简写成XY。严格说的话,不能写成XY形式,因为这种写法,使实现系统将无法识别XY是一个标识符还是两个标识符。但如果假设变量名均由一个字母组成,则写成XY形式也能够分辨出来是X和Y的两个名字。因此我们以后在一般情况下将写成XY的形式。 定义 1.2.2. (记法约定) (1) E1 E2 E3...En 〓 (((E1 E2)E3)...)En (左结合规则) (2) (x1...(.xn.E 〓 (x1.(...((xn.En)...)) (3) (x1 x2...xn.E 〓 (x1.(x2....(.xn.E (4) (x1...(.xn.E1 E2...En 〓 (x1...(.xn.(E1 E2...En) 例 1.2.1. 下面是一些简单的(_表达式例: (x.(y.xy ((x.xy)y (x.x (xy.x (

文档评论(0)

kaiss + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档