14 个不稳定版本 (3 个破坏性更新)
0.4.0 | 2024年4月26日 |
---|---|
0.3.9 | 2024年4月24日 |
0.2.1 | 2024年4月18日 |
0.1.0 | 2024年4月16日 |
#629 在 编码
每月下载量 693 次
42KB
1K SLoC
SYML 是一种类似于 YAML 的配置语言,但可能更易于使用
语法(不精确)
- _ (空白字符)
\t
- 十六进制:
[0-9A-Fa-f] - 换行符:
\r
?\n
/ 文件结束 - 注释:
;
(!nl any-char)* - 换行符:
(_ comment?\r
?\n
)+
/ 文件结束 - 转义字符:
\
( [\\nrt"' \t]
/x
hex{2}
/u
(hex{4} /{
hex+}
)
/U
hex{8}
) - 忽略字符串:
\
comment?\r
?\n
_ - 简单值:
([!#$%&()*+./0-9<=>?@A-Z\\^_`a-z|~\p{XID_Start}] /-
!
[!#$%&()*+./0-9<=>?@A-Z\\^_`a-z|~\-'\p{XID_Continue}]*
/'
[^'\r\n]*'
/"
str_ignore* ((escape / [^\r\n\\]) str_ignore*)*"
- 内联值:
[
_ (simple-val (_,
_ simple-val)* _,
?)? _]
/{
_ (simple-val _:
_ inline-value (_,
simple-val _:
_ inline-value)* _,
?)? _}
/ simple-val - 列表:
-
ivalue\n
(cnl indent(+2)-
ivalue(+2))* - ivalue:
列表
/ 简单值 _:
(_ 简单值 _:
)* (
cnl() (缩进列表(+0) / 缩进(+2) ivalue(+2))
/ 内联值
)
/ 内联值 - 值:
cnl()? ivalue(0) cnl()
示例
- name: jack
age: 18
- name: jones
age: 21
ids:
- - 1
- 2
- [3, 4] ; inline
类似于JSON5
[
{
name: "jack",
age: "18",
},
{
name: "jones",
age: "21",
ids: [
[1, 2],
[3, 4],
]
}
]
如何使用
使用命令行工具
cargo install syml --features cli-utils
使用库
let _value = syml::parser::value(r#"
; comment
- {a: 1, b: 2}
- [3, 4]
- 5
- x: 2
y: 3
"#).unwrap();
依赖关系
~96–385KB