5个版本
0.1.4 | 2023年12月31日 |
---|---|
0.1.3 | 2023年12月24日 |
0.1.2 | 2023年12月13日 |
0.1.1 | 2023年12月12日 |
0.1.0 | 2023年12月12日 |
#244 在 编程语言
80 每月下载
99KB
2K SLoC
WhileDB
While-DB编程语言的Rust实现,用于 SJTU CS2612(2022 Fall)附件 1014
待办事项
-
找到一种方法来省略
;
在}
之后,目前无法添加;
,然而 -
添加函数
-
使任何表达式可调用(目前只有
ident
可调用) -
添加类和方法
-
添加
[
]
来表示数组和获取元素 -
添加字符串
-
添加解释器或编译器
任何对象(包括程序状态)都可以表示为
Any
,指向WdAny
的指针WdAny
是Object
或Function
,其中Object
有两个字段buildin
(存储内置类型或Not
)和attrs
(一个字符串到Any
映射)Function
是内置的或定义的状态存储
- 类型(具有
"__name__"
=> typename 和"__method_name__"
=> method function)的对象 - 实例(具有
"__type__"
=> type object)的对象 - 函数...
状态 =
{ <locals>, "..": {<nonlocals>} }
😎,仅在 DefinedFunction(内置函数没有局部变量)中这样做调用一个表达式
- expr是一个
expr0.ident
,expr是一个实例(__type__
不是type
),参数为[expr0, *args]
,计划通过在eval
的返回值上添加标志来检查这一点pub fn eval(expr: Rc<Expr>, state: Any) -> Result<(Any, Option<Any>)>
等等。计划以相同的方式检查
break
、continue
和return
。 - expr是一个
WdAny::Function
,原始参数 - expr是一个
Object
- 具有
__init__
self-attr,参数为[new_obj (with __type__ => this expr), *args]
- 具有
__call__
self-attr,原始参数 - 具有从
__type__
属性中找到的__call__
属性,参数为[this expr, *args]
- 具有
- 类型(具有
未来工作
- python绑定:WhileDB.rs
- wasm
依赖关系
~4–15MB
~147K SLoC