
前两天用 C 语言实现了一个脚本语言 berry,实际上是仿照 Lua 做的,另外简单的支持了一下类。本来只是做着玩玩顺便给单片机用,所以这个脚本语言会尽量往小了做,最终目标是在 RAM 只有几 KB,ROM 几十 KB 的设备上使用。
这里是 GitHub 链接:https://github.com/gztss/berry。
语法的话中规中矩,只打算内置 list 和 hash-map 两种数据结构。由于考虑到单片机 ROM 也比较小,不会实现很丰富的标准库函数(其实是我懒得做)。
项目现在还处于项目早期,文档什么的我都还没怎么写,这几天会尽快补上。目前我已经实现了大部分的 Core Language,GC 也简单的做了一下。
这是一个简单的例子,它演示了一个 list 迭代器( list 类已经内置了迭代器),这个迭代器使用闭包实现。
def list_iter(list) index = 0 def it() value = list[index] index = index + 1 return value end return it end l = [0, 1, 2, 3, 4, 5] lout = [] it = list_iter(l) v = it() while (v != nil) lout.append(v) v = it() end print(lout) 1 FrankHB 2018 年 11 月 14 日 Any spec? |
3 FrankHB 2018 年 11 月 14 日 我写这类 spec 经常比实际实现多花 10 倍时间…… (各种测试等编译摸鱼的时间不算。) |
4 gztss OP 前面我指的是这个语言很简单,当然有些地方我考虑的确实不行。另外在 tools 目录下面有 EBNF,凑个数吧。。。 |