首页
/ 探索Toy:一个轻量级的嵌入式脚本语言

探索Toy:一个轻量级的嵌入式脚本语言

2024-05-30 19:00:39作者:袁立春Spencer

Toy Language Logo

Toy是一款旨在为应用程序提供强大定制功能的即时编译型脚本语言。它不独立运行,而是作为其他程序(主机)的一部分嵌入其中,让用户通过编写脚本文件来扩展和自定义逻辑。这种设计让开发过程更为灵活,同时保持代码的简洁性。

简单易懂的C语法风格

Toy的语言结构类似于C,它的语法简单明了,易于学习和理解。无论是初学者还是经验丰富的开发者都能快速上手。

字节码中间层编译

Toy采用了字节码中间表示,这使得它在执行效率与可移植性之间找到了良好的平衡。编译后的二进制文件(.tb 扩展名)可以在不同平台上运行。

强大的类型系统

虽然Toy支持动态类型,但它也提供了可选的静态类型系统,包括opaque类型用于处理任意数据。这意味着你可以根据需求选择更严格的类型检查或更高的灵活性。

首席公民:函数与类型

在Toy中,函数和类型都是第一类对象,可以被赋值给变量、作为参数传递或返回结果。这使得高阶编程和元编程成为可能。

完善的库导入机制

Toy允许直接从主机导入本地库,扩展其功能,实现与宿主环境的无缝集成。

创新的切片操作

对于字符串、数组和字典,Toy提供了直观的切片操作符,使数据处理更加便捷。

输出控制与调试友好的特性

Toy支持重定向输出、错误信息和断言失败消息,方便开发者调试和控制信息流。

构建与工具

在Windows (mingw32 和 cygwin),Linux以及MacOS上,只需在根目录下运行make即可构建。Windows (MSVC) 用户可以使用提供的Visual Studio项目文件。尽管MacOS和Windows (MSVC)未官方支持,但我们尽力确保兼容。

此外,通过运行make install-tools,你还可以安装VSCode语法高亮等实用工具。

示例代码

import standard;

print "Hello world";

var msg = "foobar";

assert true, "This message won't be seen";

fn makeCounter() {
    var total: int = 0;

    fn counter(): int {
        return ++total;
    }

    return counter;
}

var tally = makeCounter();

print tally(); //1
print tally(); //2
print tally(); //3

许可证与贡献者

Toy遵循zlib许可证,鼓励自由使用和改进。许多贡献者的辛勤工作使得Toy不断进步,其中包括:@hiperiondev,@add00,@gruelingpine185,@solar-mist 和一些匿名个体。

最后,特别感谢http://craftinginterpreters.com/ 提供的精彩书籍,为这个项目提供了灵感和指导。

如果你寻求一款既灵活又强大的嵌入式脚本解决方案,不妨尝试一下Toy,你会发现它能轻松融入你的应用,为你的开发带来乐趣和便利。让我们一起探索Toy的世界吧!

项目优选

收起
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
33
24
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
828
0
redis-sdkredis-sdk
仓颉语言实现的Redis客户端SDK。已适配仓颉0.53.4 Beta版本。接口设计兼容jedis接口语义,支持RESP2和RESP3协议,支持发布订阅模式,支持哨兵模式和集群模式。
Cangjie
376
32
advanced-javaadvanced-java
Advanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。
JavaScript
75.92 K
19.09 K
qwerty-learnerqwerty-learner
为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers
TSX
15.62 K
1.45 K
easy-eseasy-es
Elasticsearch 国内Top1 elasticsearch搜索引擎框架es ORM框架,索引全自动智能托管,如丝般顺滑,与Mybatis-plus一致的API,屏蔽语言差异,开发者只需要会MySQL语法即可完成对Es的相关操作,零额外学习成本.底层采用RestHighLevelClient,兼具低码,易用,易拓展等特性,支持es独有的高亮,权重,分词,Geo,嵌套,父子类型等功能...
Java
19
2
杨帆测试平台杨帆测试平台
扬帆测试平台是一款高效、可靠的自动化测试平台,旨在帮助团队提升测试效率、降低测试成本。该平台包括用例管理、定时任务、执行记录等功能模块,支持多种类型的测试用例,目前支持API(http和grpc协议)、性能、CI调用等功能,并且可定制化,灵活满足不同场景的需求。 其中,支持批量执行、并发执行等高级功能。通过用例设置,可以设置用例的基本信息、运行配置、环境变量等,灵活控制用例的执行。
JavaScript
9
1
Yi-CoderYi-Coder
Yi Coder 编程模型,小而强大的编程助手
HTML
57
7
RuoYi-VueRuoYi-Vue
🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
Java
147
26
markdown4cjmarkdown4cj
一个markdown解析和展示的库
Cangjie
10
1