首先我们准备实现的编程语言长啥样# 这是一个注释
println("Hello World!");
println(2 + 3 * 4);
# 使用lambda作为声明函数的关键字
fib = lambda (n) if n < 2 then n else fib(n - 1) + fib(n - 2);
println(fib(15));
print-range = lambda(a, b) # 声明函数
if a <= b then { # 并且实现 if else 控制流
print(a);
if a + 1 <= b {
print(", ");
print-range(a + 1, b);
} else println(""); # 每个 println 会自动缀上 \n
};
print-range(1, 5);
emmm 大概长成这个样子,因为if else 之类的分界要是用python 的缩进可能比较困难,so 还是用花括号吧声明函数的话 用缩进还是不错的比较好实现。
我们需要实现的模块
一个单文件解释型语言解释器的组成基本这四个模块就可以搞定了。File Scanner 的工作就是把文件读出来然后封装一些方法方便Token splitor 的token 分割
Tokensplit