【发布时间】:2018-11-05 21:33:08
【问题描述】:
在编译过程中(在高层次上)通常发生类型检查(教科书与实践)时,从高层次上想知道。我对编译过程的大致理解是:
- 将源代码解析为 AST
- 将 AST 转换为中间表示 IR
- 优化 IR(即 SSA 表格、注册分配等)
- 简化 IR
- 生成最终输出代码
想知道类型检查是发生在(1)和(2)之间,(2)和(3)之间,还是在(4)之后,或者它是否在整个过程中发生,或者其他什么。我很想知道面向对象、函数式和逻辑编程的答案(按优先级顺序),但如果我必须选择一个,那么 OO,比如像 Ruby 这样的动态类型语言,或者像静态类型的函数式语言哈斯克尔。
【问题讨论】:
标签: ruby haskell compiler-construction jit typechecking