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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值