1个不稳定版本
0.1.0-dev.0 | 2020年5月26日 |
---|
#5 in #silkworm
2KB
silkworm
silkworm是纯Rust实现的Yarn交互式对话语言。
进行中
silkworm目前处于初始开发阶段。任何和所有宣传的功能可能尚未实现!
- 词法分析器
- 解析器
- 运行时
- 源映射
- IR定义、AST验证和降级
- 解释器
- 用户界面API
- CLI工具?
(希望)功能
- 对话中的纯文本零拷贝解析。
- 支持Yarn 1.1的超集,包括作用域标识符和子程序等有用功能。
- 被动运行时,易于集成到任何类型的程序中。
- 在Rust中!
与YarnSpinner的不同之处
运行时
silkworm运行时是被动且不假设实时环境的。因此,即使在YarnSpinner中内置的命令如wait
也必须由用户提供。
目前也没有计划包括YarnSpinner内置格式函数的实现(如select
、plural
和ordinal
),因为开发重点在于语言本身。如果需要,用户可以提供自己的格式函数。
关键字
除了YarnSpinner关键字和运算符之外,还有一些目前未使用的关键字被预留以供向前兼容。
有关目前使用和预留的关键字完整列表,请参阅docs/keywords.md。
预处理指令
silkworm支持预处理指令,它们是放置在源代码中以改变silkworm行为的指令。它们的形式为//# name(<arg>, ...)
或//#! name(<arg>, ...)
注释。可以通过运行时API完全禁用预处理指令。
以//#
开头的预处理指令位于它们修改的代码之前,被称为“外部”样式预处理指令。以//#!
开头的预处理指令放置在它们修改的块内部,被称为“内部”样式预处理指令。某些预处理指令只能放置在文件的开始处。这些预处理指令必须是“内部”样式,并且位于文件中所有节点之前,但可能由任意数量的常规注释先于或后于。
默认情况下,silkworm在遇到它不理解的处理指令时会发出警告。
请参阅docs/pragmas.md以获取silkworm支持的完整pragmas列表。
语言特性
silkworm的方言在Yarn 1.1的基础上增加了一些有用的扩展。这些特性可以在运行时单独启用或禁用,或者使用文件顶部的feature
pragmas针对单个文件进行启用或禁用。
请参阅docs/features.md以获取silkworm支持的完整语言特性列表。
许可证
silkworm遵循MIT许可证。