CS143 斯坦福大学编译原理-Semantics

简介

tokens => lexical analysis词法分析 grammar => syntactic analysis语法分析 typing rules => semantic analysis语义分析 evaluation rules => code generation and optimization代码生成和优化

Operational Semantics

与变量声明类似,这里声明的是运算值

示例说明

变量名和位置map

变量值存储

Cool对象表达方式

特殊场景

其他

Cool Semantics

复杂示例1

复杂示例2

通用表达

示例说明

if条件满足: while条件不满足: while条件满足: 有新申明的变量:

声明对象T通用语法

  • 声明内存存放类对象T的所有属性
  • 设置所有属性的默认值
  • 对象属性初始化
  • 返回新对象地址

对象默认值

对象属性初始化

示例说明

e0.f(e1,…,en)的通用语法

  • 按照参数顺序e1,…,en处理
  • 处理目标对象e0
  • 声明X为动态类目标对象
  • 获取X的f(有n个参数)定义
  • 创建n个新局部变量和一个环境
  • 初始化局部变量
  • 将self指向目标对象

通用表达式

示例说明

Intermediate Code中间码

简介

在源码与目标码之间的语言; 提供一种抽象的中间层; - 比源码拥有更多细节; - 比目标码少细节; 中间语言等同高级汇编; 每个指令采用三操作数方式;

特点

与汇编代码生成器类似; 可以使用任意个中间寄存器存储结果;

表达式

igen(e,t)表示:在寄存器t中,计算表达式e的值得代码

示例说明