指称语义的原理与应用.ppt

第九章 指称语义的原理与应用 16.5 程序失败的语义描述 sum: Integer × Integer→ Integer sum (int1,int2) = if abs(int1+int2) =maxint then int1+int2 else ⊥ sum (⊥,int2)= ⊥ sum (int1,⊥) = ⊥ evaluate 〖E1 + E2〗 env sto = let integer int1 = evaluate E1 env sto in let integer int2 = evaluete E2 env sto in integer (sum (int1,int2)) * * 代数语义学 理论基础 函数式描述方法 程序设计语言 形式语义 指称语义学 操作语义学 公理语义学 代数 功能 执行 逻辑 关系 模型 离散数学 程序设计语言 形式语义 编译原理 程序设计语言 理论基础 语义形式化 语法形式化 软件开发方法 程序设计语言 形式语义 程序设计方法 程序设计语言理解 抽象能力 Formal Method Formal Specification Formal Verification 指称语义学是Christopher Strachey和Dana Scott在1970年提出的。 指称语义学的一个显著特征是: 程序中的每一个短语(表达式、命令、声明等)都有其意义。它是与语言的语法结构平行的。每个短语的语义函数就是短语的指称意义。其现代名称为指称语义学。 16.1 指称语义原理 从数学的观点,一个程序可以看作是从输入到输出的映射P(I)→O,即输入域(domain)上的值,经过程序P变为输出域(range)的值。 φ〖p〗→d (p∈P,d∈D)。 语义域D中的数学实体d, 或以辅助函数表达的复杂数学实体d,称为该短语的数学指称物,即短语在语义函数下的指称语义。 指称语义描述的是语义函数映射的后果,不反映如何映射的过程,更没有过程的时间性。而程序设计语言的时间性只能反映到值所表达的状态上。 ● 语义函数和辅助函数 描述二进制数的语义 二进制数 Numeral ::= 0 (16.1-a) | 1 (16.1-b) | Numeral 0 (16.1-c) | Numeral 1 (16.1-d) 我们给出求值的语义函数:将Numeral集合中的对象映射为自然数: valuation: Numeral→Natural (16.2) 按语法的产生式,我们给出以下语义函数: valuation 〖0〗= 0 valuation 〖1〗 = 1 valuation 〖N0〗 = 2 × valuation 〖N〗 ∥N∈Numeral valuation 〖N1〗 = 2 × valuation 〖N〗+ 1 valuation〖1101〗 = 2 × valuatioin 〖110〗+ 1 = 2 × (2 × valuation 〖11〗) + 1 = 2 × (2 ×(2 × valuation 〖1〗+ 1)) + 1 = 2 × (2 ×(2 ×1 + 1)) + 1 = 13 计算器命令的语义描述 计算器命令的抽象语法: Com ::= Expr= (16.3) Expr ::= Num (16.4-a) | Expr + Expr (16.4-b) | Expr - Exp (16.4-c) | Expr * Expr (16.4-d) Num ::= Digit|Num Digit (16.5) Digit ::= 0|1|2|3|4|5|6|7|8|9 (16.6) execute : Com →lnte

文档评论(0)

1亿VIP精品文档

相关文档