#yarn #language #dialog #interactive #pure

缟蚕

(占位符) 纯Rust实现的Yarn交互式对话语言

1 个不稳定版本

0.1.0-dev.02020年5月26日

#18 in #dialogue

MIT 许可证

160KB
4.5K SLoC

缟蚕

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

开发中

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

  • 词法分析器
  • 语法分析器
  • 运行时
    • 源映射
    • IR定义、AST验证和降低
    • 解释器
  • 用户界面API
  • CLI工具?

(希望) 功能

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

与YarnSpinner的区别

运行时

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

目前没有计划包括YarnSpinner内置格式函数的实现(如selectpluralordinal),因为开发重点在于语言本身。如果需要,用户可以提供自己的格式函数。

关键字

除了YarnSpinner的关键字和运算符之外,还预留了一些当前未使用的关键字,以实现向前兼容。

有关当前使用和预留的关键字完整列表,请参阅docs/keywords.md

预处理指令

缟蚕支持预处理指令,它们是在源代码中放置的指令,用于改变缟蚕的行为。它们的形式为//# name(<arg>, ...)//#! name(<arg>, ...)注释。可以使用运行时API完全禁用预处理指令。

//#开头的预处理指令位于它们修改的代码之前,被称为“外部”样式预处理指令。以//#!开头的预处理指令放置在它们修改的块内部,被称为“内部”样式预处理指令。某些预处理指令只能放置在文件的开始处。这些预处理指令必须是“内部”样式,并位于文件中所有节点的之前,但可以由任意数量的常规注释先于或后于。

默认情况下,缟蚕在遇到它不理解的处理指令时将生成警告。

有关缟蚕支持的所有预处理指令的完整列表,请参阅docs/pragmas.md

语言功能

丝蚕方言在 Yarn 1.1 之上包含了许多有用的扩展。这些特性可以在运行时单独启用或禁用,或者使用feature 语句在文件的顶部来为单个文件启用或禁用。

有关丝蚕支持的语言特性的完整列表,请参阅docs/features.md

许可证

丝蚕采用 MIT 许可证。

依赖项

~4–5.5MB
~109K SLoC