语义综述
编译整体结构:
语言的真正实现存在了大量细节:
这里引入操作语义的概念:
补充两个语义概念:
操作语义
符号定义:
和类型检查类似,这里的 result 是 value,类型检查的 result 是 type.
示例:
这里用
记录 scope 和对应的值。
举例说明:
Cool 语言中的元素描述:
特例:
Cool 操作语义的表达方式:
注意点:
- so,E 在 expression 操作过程中不会改变。
- 只有运算完成后,才会又返回值。
理解对于 object,申请之后元素地址内容可以变,地址资源不会变。
整体上看确实不易理解。
cool 语义说明:
常量:
获取属性:
self:
赋值:
这里地址会发生变化。
运算:
这里看到 e1 的 S1 依赖 S,e2 的 S2 依赖 S1.
通用顺序表达式:
举例说明:
注意这里 [l<-12] 表示存储 12 的地址。
条件表达式:
这里是 true 的示例,false 与之对称。
Loop:
let:
这里申请 newloc 有点绕。
object 生成:
初始化值:
cool 在创建时可以传入初始数据
其 attribute 顺序按照 greatest ancestor。
对象创建对应的语义:
函数调用:
函数调用的表达式:
函数调用总结:
操作语义时依赖于类型检查的,类型检查可以规避也写错误判断。
操作语义总结:
个人总结,操作语义过于抽象,看的我就想睡觉。。。。
转载文章时务必注明原作者及原始链接,并注明「发表于 TesterHome 」,并不得对作品进行修改。
暂无回复。