静态与动态语义
:material-circle-edit-outline: 约 388 个字 :material-clock-time-two-outline: 预计阅读时间 1 分钟
我们接触一个新的语言叫 \(E\) 语言
语法syntax
语⾔的抽象语法由⼀系列算⼦及其元数指定。
let
是把 \(e_2\) 里的 \(x\) 替换为 \(e_1\)
语法 vs 语义
静态语义-类型系统
类型系统的作⽤是对短语(phrase)的形成加以约束,短语是上下⽂敏感的。
这本书/这门课将程序看作是连续的计算,语句和表达式都用计算表示
短语则是程序的一段计算片段,由于计算可能设计前后的变量,所以是上下文无关的
\(E\) 的静态语义 由如下形式的 泛型假⾔判断 的 归纳定义 组成:
泛型指以类型作为计算对象,而非具体数值
这个表达式意思是,在左边(上下文)的条件下,表达式 \(e\) 的类型是 \(\tau\)
那个绞刑架符号 \(\Gamma\) 是类型的集合,按顺序说明了 \(\vec{x}\) 里每个变量的类型
这个乱七八糟的定义就是,左边一堆 \(x\) 是 \(e\) 可能用到的变量,这些变量为这些类型时,\(e\) 的结果是那个类型
麻,没课本
上图最后一行,逗号表示后者不在前者里面
动态语义-转换系统
确定性即每个状态最多只有一条出路,不用选择
结构化动态语义
如果算出这两个值,就是 final 状态,说白了就是算出结果了