#silkworm #language #yarn #dialog #pure #interactive #pragmas

silkworm_features

silkworm 的内部依赖

1 个不稳定发布

0.1.0-dev.12020 年 7 月 1 日

#4 in #silkworm

MIT 许可证

4KB
61 行代码(不包括注释)

silkworm

silkworm 是纯 Rust 实现的 Yarn 交互式对话语言。

开发中

silkworm 目前处于初期开发阶段。所宣传的所有功能可能尚未实现!

  • 词法分析器
  • 解析器
  • 运行时
    • 源映射
    • IR 定义,AST 验证和降级
    • 解释器
  • 面向用户的 API
  • CLI 工具?

(希望是)功能

  • 支持对话中的纯文本的零拷贝解析。
  • 支持 Yarn 1.1 的超集,包括范围标识符和子程序等有用功能。
  • 被动运行时,易于集成到任何类型的程序中。
  • 在 Rust 中!

与 YarnSpinner 的区别

运行时

silkworm 运行时是被动型的,不假设实时环境。因此,即使在 YarnSpinner 中内置的命令如 wait 也必须由用户提供。

目前也不打算包括 YarnSpinner 内置格式函数(selectpluralordinal)的实现,因为开发重点集中在语言本身上。如果需要,用户可以提供自己的格式函数。

关键字

除了 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许可证下使用。

无运行时依赖