2 个版本
0.1.0-dev.1 | 2020年6月23日 |
---|---|
0.1.0-dev.0 | 2020年5月30日 |
在 #silkworm 中排名第 1
在 3 个crate中使用(直接使用2个)
5KB
71 行
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。
silkworm
的内部大部分是用假设所有代码都将驻留在可使用字节进行连续内存寻址的情况下开发的。这简化了解析,但擦除了关于源位置的信息。silkworm_sourcemap
包含了将字节位置转换为文件位置以及反向转换所需的必要设施。