Skip to content

静态与动态语义

:material-circle-edit-outline: 约 388 个字 :material-clock-time-two-outline: 预计阅读时间 1 分钟

5 静态和动态语义.pdf

我们接触一个新的语言叫 \(E\) 语言

语法syntax

语⾔的抽象语法由⼀系列算⼦及其元数指定。

image-20241023112135386

let 是把 \(e_2\) 里的 \(x\) 替换为 \(e_1\)

语法 vs 语义

静态语义-类型系统

类型系统的作⽤是对短语(phrase)的形成加以约束,短语是上下⽂敏感的。

这本书/这门课将程序看作是连续的计算,语句和表达式都用计算表示

短语则是程序的一段计算片段,由于计算可能设计前后的变量,所以是上下文无关的

\(E\) 的静态语义 由如下形式的 泛型假⾔判断 的 归纳定义 组成:

image-20241023113900237

泛型指以类型作为计算对象,而非具体数值

这个表达式意思是,在左边(上下文)的条件下,表达式 \(e\) 的类型是 \(\tau\)

那个绞刑架符号 \(\Gamma\) 是类型的集合,按顺序说明了 \(\vec{x}\) 里每个变量的类型

这个乱七八糟的定义就是,左边一堆 \(x\)\(e\) 可能用到的变量,这些变量为这些类型时,\(e\) 的结果是那个类型

image-20241023115313889

麻,没课本

上图最后一行,逗号表示后者不在前者里面

image-20241023120929390

image-20241023120935840

image-20241023121850813

动态语义-转换系统

image-20241023122007354

image-20241023122241831

确定性即每个状态最多只有一条出路,不用选择

image-20241023122358805

结构化动态语义

image-20241023122648353

如果算出这两个值,就是 final 状态,说白了就是算出结果了

image-20241023122746384

image-20241023122759772

image-20241023122820805