如何寫一個簡單的直譯器-0
阿新 • • 發佈:2018-11-02
在接下來的幾篇文章中,我們一起用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)。