编译整体结构:
语言的真正实现存在了大量细节:
这里引入操作语义的概念:
补充两个语义概念:
符号定义:
和类型检查类似,这里的 result 是 value,类型检查的 result 是 type.
示例:
这里用
记录 scope 和对应的值。
举例说明:
Cool 语言中的元素描述:
特例:
Cool 操作语义的表达方式:
注意点:
理解对于 object,申请之后元素地址内容可以变,地址资源不会变。
整体上看确实不易理解。
self:
这里地址会发生变化。
这里看到 e1 的 S1 依赖 S,e2 的 S2 依赖 S1.
通用顺序表达式:
举例说明:
注意这里 [l<-12] 表示存储 12 的地址。
这里是 true 的示例,false 与之对称。
这里申请 newloc 有点绕。
初始化值:
cool 在创建时可以传入初始数据
其 attribute 顺序按照 greatest ancestor。
对象创建对应的语义:
函数调用的表达式:
函数调用总结:
操作语义时依赖于类型检查的,类型检查可以规避也写错误判断。
操作语义总结:
个人总结,操作语义过于抽象,看的我就想睡觉。。。。