1 个不稳定版本
0.0.0 | 2021年6月8日 |
---|
#19 在 #ion
18KB
389 行(不包括注释)
Pest到Ion
这一项目的动机是创建一种可移植的方式来在其他工具中作为数据格式来内省Pest语法,而不是在其他平台上为Pest语法提供定制的解析器。
lib.rs
:
示例
将Pest语法转换为Ion最简单的方法是从一个str
切片中转换。
use pest_ion::*;
use ion_rs::value::*;
use ion_rs::value::reader::*;
fn main() -> PestToIonResult<()> {
// parse a Pest grammar and convert it to Ion element
let actual = r#"a = @{ "a" | "b" ~ "c" }"#.try_pest_to_element()?;
// here is the equivalent Ion element
let ion_text = r#"{
a: {
type: atomic,
expression:
(choice
(string exact "a")
(sequence
(string exact "b")
(string exact "c")
)
)
}
}"#;
let expected = element_reader().read_one(ion_text.as_bytes())?;
// these should be equivalent
assert_eq!(expected, actual);
Ok(())
}
依赖关系
~16MB
~310K SLoC