#language #silkworm #dialog #interactive #yarn #diagnostics #compiler

silkworm_err

silkworm的编译器诊断

2个版本

0.1.0-dev.12020年6月23日
0.1.0-dev.02020年5月30日

#388 in 编程语言


2个crate中使用(通过silkworm_syn

MIT许可证

13KB
243

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遇到它不理解的预处理指令时,将生成警告。

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

语言功能

silkworm方言在Yarn 1.1的基础上包含了一些有用的扩展。这些功能可以在运行时单独启用或禁用,或者使用文件顶部的feature预处理指令在单个文件中启用或禁用。

有关silkworm支持的语言功能的完整列表,请参阅docs/features.md

许可

silkworm遵循MIT许可协议。


lib.rs:

silkworm的编译器诊断。

这个crate主要打算作为silkworm项目的内部依赖,该项目是纯Rust实现的Yarn交互式对话语言。预期最终用户将使用面向用户的API silkworm,而不是直接依赖这个crate。

这个crate定义了在silkworm crates之间构建编译器诊断信息所使用的类型。

依赖关系

~2.5–3.5MB
~73K SLoC