这篇文章翻译自Stephen Diehl的Blog,鉴于原文的长度,这将会是个天坑。
那么,为什么要翻译这篇文章呢?主要还是由于Stephen Diehl大神的文章实在是让人大开眼界(特别是这篇,当初看过LYAH之后就该直接来刷这个的,简直跟翻开一本黑魔法书一样)。并且,这篇blog的深度正好适合“入门”之后的中级Haskeller。这个项目从头到尾自己敲一遍基本上Haskell的种种特性就熟悉了(笑)。
注:本文会夹杂大量私货,同时会补充原文中不易理解的地方,如有错误还请指正。
那么,在开始之前,先放上目录吧。
Chapter 1 (引言)
- 设置
- 基本语言
- LLVM 介绍
- 完整源码
Chapter 2 (语法分析(Parser)和抽象语法树(AST))
- Parser组合子(Parser Combinator)
- 词法分析器(Lexer)
- 语法分析器(Parser)
- REPL
- 完整源码
Chapter 3 (代码生成)
- Haskell LLVM绑定
- 代码生成设置
- 代码块(Blocks)
- 指令(Instruction)
- 从抽象语法树到中间语言(IR)
- 完整源码
Chapter 4 (JIT 和优化器支持)
- 抽象语法树和模块(Modules)
- 常量折叠(Constant Folding)
- Optimization Passes(优化阶段?)
- 添加一个JIT编译器
- 外部函数
- 完整源码
Chapter 5 (控制流)
- “if”表达式
- “for”循环表达式
- 完整源码
Chapter 6 (运算符)
- 用户定义的运算符
- 二元运算符
- 一元运算符
- Kicking the Tires <- 这个太不好翻译了(逃
- 完整源码
Chapter 7 (变量)
- 为什么这是一个困难的问题
- LLVM中的内存
- 变量
- 赋值
- 完整源码
Chapter 8 (结语)
- 教程总结
Chapter 9 (附录)
- 命令行工具
如果有时间的话大概会实现一些扩展功能,到时候再加上吧。