jingoro2112/wrench

GitHub: jingoro2112/wrench

一个超轻量级的嵌入式脚本解释器,解决在资源受限设备上运行脚本的内存和空间问题。

Stars: 150 | Forks: 16

https://home.workshopfriends.com/wrench/www 一个功能齐全的编译器+解释器,仅使用极少的RAM和程序空间。 极少到什么程度?wrench虚拟机编译后在Arduino上大小约为28K,运行时使用不到700字节的RAM,完全可以在Uno Mini上运行。 亮点: - 弱类型,支持原生32位整型、浮点型和字符串。 - 使用熟悉的C语言语法,编写代码轻松。 - 优化的编译器和极快的虚拟机。 - 生成紧凑、字节码大小端无关:随处编译,随处运行。 - 可以从ROM执行,不会创建代码的本地副本。 - 支持多个并发上下文。 - 编写代码简单,想象一下去掉类型名的C语言;差不多就是这样。 - 支持一个优秀解释器应有的一切:if/then/else/do/while/for/switch/函数/运算符/等等... - 是的,也支持结构体。 - 是的,支持switch(并且不,它不是if-else的语法糖)。 - 可以直接操作数据,并暴露所有静态值供外部直接操作。 - 可以以最小开销与原生代码互相调用。 - API设计为易于扩展,这正是关键所在! - 内存有垃圾回收,但仅用于动态数组。除非你在分配/释放数组,否则GC_绝不会_运行。 - 包含一个方便的命令行工具。 - 易于集成,这是一个完整示例: ----- 步骤 1:整个源代码树都已包含,但封装在两个文件中:src/wrench.h 和 src/wrench.cpp。只需在你的构建中包含它们,你就拥有了所有内容。 ----- 步骤 2:这是一个完整的源代码示例: ```cpp #include #include #include void print( WRContext* c, const WRValue* argv, const int argn, WRValue& retVal, void* usr ) { char buf[1024]; for( int i=0; i
标签:API设计, Arduino开发, C++语言, ROM执行, switch语句, 代码集成, 优化编译, 低内存占用, 动态数组, 原生代码调用, 可移植性, 垃圾回收机制, 多上下文支持, 字节码生成, 实用脚本工具, 嵌入式系统, 嵌入式编程, 嵌入式脚本, 并发执行, 快速执行, 端序中立, 结构体支持, 编译器技术, 脚本解释器, 脚本语言开发, 虚拟机优化, 虚拟机实现, 资源高效, 轻量级设计