2016.7.12 初次更新
完成了基础的词法分析,很不好意思,使用了正则表达式,现在能够辨别词素有字符串,ID,整形,和双精度的浮点型,因为打算做弱类型语言,所以数字类型的选择是通过自动判断的。
2016.7.14 文本段的解释器写完了
能够运行定义的代码了。
num = 0; i = 1; while (i < 10){ if (i % 2 == 0){ num = num + i; } i = i + 1; } num;类似这样的代码。
2016.7.16 增加了for语句,break语句,增加了函数调用。
function fib(n){ if (n < 2){ n; }else{ fib(n - 1) + fib(n - 2); } } fib(10);支持诸如此类的代码。
昨天的时候,我写了一个小的彩蛋,使用GraphViz的JavaAPI去绘制运行代码的AST树,下面有一些示例,其余保存在src/HobbyScript/Tmp/中。
2016.7.17 试着增加了一下闭包函数 现在有点混乱
修改了一下,目前是能用了,能运行诸如以下的使用了闭包的代码。
i = 0; lfkdsk = closure(n){ n = n + 100; } lfkdsk(); lfkdsk();2016.7.22 现在完成了 OOP的初次封装,支持了两种构造函数。
i = 301; class lfkdsk { Ss = i; function Initial(x){ Ss = i; } Ssdut = closure(){ Ss = 1000; }; } class lfk extend lfkdsk { function Lfkddd(){ super.Ssdut(); } } lfi = lfk.Initial(200); logInfo(lfi.Lfkddd() + " " + lfi.Ss);2016.7.23 修改了几个环境的bug,类能够很简单地表示链表等数据结构,这就有了很多的可能性。
class Node {
value = 0;
next = 0;
function Initial(v){
value = v;
};
function GetV(){
value;
};
function SetV(v){
value = v;
};
function SetN(n){
next = n;
}
function GetN(){
next;
}
}
firstNode = Node.Initial(0);
secondNode = Node.Initial(" fuck you");
firstNode.SetN(secondNode);
logInfo(firstNode.GetN().GetV() + " ");

