这个系列的文章会用haskell写点好玩而且简单的abstract interpreter(linter)和concrete interpreter(interpreter).
前面的目标语言非常简单。仅支持乘法和除法,还有一个除以0的Exception。
data Expr =
Mul Expr Expr
| Div Expr Expr
| Lit Int
实现尽量精简,尽量保持在100行以下。尽量开各种语言拓展来消除各种boilerplate code。
这个系列的文章会用haskell写点好玩而且简单的abstract interpreter(linter)和concrete interpreter(interpreter).
前面的目标语言非常简单。仅支持乘法和除法,还有一个除以0的Exception。
data Expr =
Mul Expr Expr
| Div Expr Expr
| Lit Int
实现尽量精简,尽量保持在100行以下。尽量开各种语言拓展来消除各种boilerplate code。