首页
/ 探索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的世界吧!

热门项目推荐

项目优选

收起
Python-100-DaysPython-100-Days
Python - 100天从新手到大师
Python
266
55
国产编程语言蓝皮书国产编程语言蓝皮书
《国产编程语言蓝皮书》-编委会工作区
65
17
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
196
45
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
53
44
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
268
69
qwerty-learnerqwerty-learner
为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers
TSX
333
27
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
896
0
advanced-javaadvanced-java
Advanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。
JavaScript
419
108
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
144
24
HarmonyOS-Cangjie-CasesHarmonyOS-Cangjie-Cases
参考 HarmonyOS-Cases/Cases,提供仓颉开发鸿蒙 NEXT 应用的案例集
Cangjie
58
4