一个简单的parser

所有的内容基于《两周自制脚本语言》。

原文中使用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 自己研究。

posted @ 2015-01-20 13:46  kalluwa  阅读(189)  评论(0编辑  收藏  举报