README.md | README-en.md
betterlang是一个用C编写的、编译到字节码的动态语言
具有自己的GC(标记-清除)
语法类似早期JavaScript
不支持宽字符
git clone https://github.com/FkjAccount123456/betterlang
cd betterlang
make build
./main hello.bl
- GC图存储方式由连续表结构变为链表
- 内存回收后GC中的内存记录会被删除
- 避免出现无内存泄漏却内存占用大的情况
- 字典实现方式由字典树变为哈希表
- 减少内存消耗,但速度会减慢(处理哈希冲突)
- 从基于tokens直接编译变为先语法分析再进行编译
- 便于扩展和调试
- 加入变量提升
- 熟悉JavaScript的一定知道
- 更多的功能
- 敬请期待betterlang后续的小版本
- int(C语言long long)
- float(C语言double)
- string
- list
- dict/object
- function
- builtin function
- method
println("Hello, world!");
println(1 + 2);
println(0.1 + 0.2);
if 0 { println(0); }
else if 1 { println(1); }
else { println(2); }
var i = 0;
while 1 {
i = i + 1;
if i == 5 { continue; }
if i == 10 { break; }
println(i);
}
func fac(num) {
if num == 0 { return 1; }
else { return fac(num - 1) * num; }
}
var a = 10;
println(fac(a));
func Counter(start) {
func next() {
start = start + 1;
return start;
}
return next;
}
var counter = Counter(0);
var x = counter();
while x < 10 {
println(x);
x = counter();
}
var fn1 = func(a) { return a + 1; };
println(fn1(1));
var obj = {
a: 10,
b: 20,
print: func(self) {
println("a: ", self["a"], ", b: ", self["b"]);
return none;
},
setA: func(self, a) {
self["a"] = a;
return none;
},
};
obj.print();
obj.setA(30);
obj.print();