0.0.0 |
|
---|
#93 在 #markup-language
18KB
解析器概述
关于 owens-ml-parser
此针对 owens-ml
标记语言的解析器是一个学习项目,旨在使用 nom
创建一个简单的库。这个“核心”解析器可以轻松扩展到其他语言的运行时和绑定(例如,使用 pyo3
的 Python)以构建一个小型生态系统。
注意:作为学习项目,其质量可能不是最好的。
计划中的生态系统
- 核心解析器库: owens-ml-parser
owens-ml
设计规范: owens-ml 规范- Python 版本: 无
- Rust 运行时: 无
标记语言规范概述
关于 owens-ml
owens-ml
是一个易于解析的通用标记语言(可以用作 json/yaml/toml 等的替代),使用 Rust + nom
库 实现。
以下列出了 owens-ml
的一些关键目标
- 易于解析且高效;不推断类型。
- 通用语法;与 JSON、TOML、YAML 或 Python Dict 兼容,布局更改非常小或没有。
- 相对 易于阅读;这不是此标记语言的主要优先级,但总是很受欢迎。
- (未来) owens-ml 与 serde 兼容,允许与
owens-ml
之间的转换。
示例 owens-ml
语法
(s) "hello there" (o) {
(s) "woo" (a-i) [
4234,
5,
34
],
(i) 3423 (o) {
(s) "ids" (o) {
(i) 423 (s) "scOwez",
(i) 4234 (s) "gdude",
(i) 234 (s) "bisk",
(s) "username_dynamic" (s) "woo"
}
}
},
(s) "cool_array" (a-s) [
"woo",
"cool",
"awesome",
":)"
]
如您所见,owens-ml
是一个严格的静态类型标记语言,每种不同的类型都有不同的注释。这是有原因的: 解析容易。
依赖关系
~1MB
~17K SLoC