2个版本
0.1.0-dev.1 | 2020年6月23日 |
---|---|
0.1.0-dev.0 | 2020年5月30日 |
#388 in 编程语言
在2个crate中使用(通过silkworm_syn)
13KB
243 行
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遇到它不理解的预处理指令时,将生成警告。
有关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