在接下来的几篇文章中,我们一起用Java写一个简单的编程语言(我称之为Lan)解释器。该语言不会有实际用处,仅仅用于演示Pratt解析算法。目标读者是对编程语言的解析感兴趣的初学者,当然我也是。先看看Lan的一些代码:
变量类型(数字,布尔值,字符串,函数,null)
n = 123 + 1 - 23 * 21 / 3
b = true
s = "hello lan"
hello = func(name){print "hello world" + name}
n = null
控制流(打印乘法表)
i = 1
while i < 10 {
j = 1
while j < 10 {
print i+"*"+j+"="+i*j
j = j + 1
}
i = i + 1
}
函数(斐波拉契数)
func fib(n) {
if n == 0 {
0
} else if n == 1 {
1
} else {
fib(n-1)+fib(n-2)
}
}
foo = fib(10)
print foo
闭包
makeAdder = func(numberToAdd) {
return func(n) {
n + numberToAdd
}
}
adder = makeAdder(10)
print adder(5)
print makeAdder(20)(5)
看起来还不错,实现起来也非常的简单。下一篇文章开始词法分析,也就是把源代码分解成一个个的词(Token)。