一个简单的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?自己研究。
轉載于:https://www.cnblogs.com/kalluwa/p/4235896.html
總結
以上是生活随笔為你收集整理的一个简单的parser的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 性能调优:理解Set Statistic
- 下一篇: 坐标系编程