如何写一个简单的解释器-0

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cwt8805/article/details/82497359

在接下来的几篇文章中,我们一起用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)。

猜你喜欢

转载自blog.csdn.net/cwt8805/article/details/82497359