所有的内容基于《两周自制脚本语言》。
原文中使用Java编写。鉴于本人不怎么会写Java(书里面有好奇怪的语法,不懂(逃)),便用C#写了一个简单的parser。
代码输入格式:
1:
i=2+3*3/(4-2)
2:
i=1;
if(i)
{
i=2;
}
3:
i=4;
sum=0;
while(i)
{
i--;
sum = sum +i;
}
sum;
4:
fun name(i,j){ i+j;}
name(2,3);
name(3,6);
5:
kk = fun name(i,j,k){i+j+k;}
kk(1,2,3);
kk(1,2,6);
6:[call c# static function]
invoke("System.Console","WriteLine","helloworld");
or[some shortcuts in this parser]
invoke("print","helloworld");
invoke("time");
截图如下:
1:
2:
不能使用递归,这是我留的一个bug,只是有点不想改而已,感觉添加递归会很慢。
毕竟是java,╮(╯▽╰)╭,都不知道为何看作者写的代码这么别扭(好吧,我只是觉得 类似【@XXX】 很费解,)。虽然是按照书上来的,但鉴于java不熟悉,里面很多细节全都是我自己乱想的,可以说没什么优化。权当学习编译原理了。
有兴趣的可以去https://github.com/kalluwa/HelloWorld 自己研究。