1 个不稳定版本

0.0.0 2021年6月8日

#19#ion

Apache-2.0

18KB
389 行(不包括注释)

Pest到Ion

这是一个将Pest语法转换为Ion数据格式的简单工具和库。

这一项目的动机是创建一种可移植的方式来在其他工具中作为数据格式来内省Pest语法,而不是在其他平台上为Pest语法提供定制的解析器。


lib.rs:

提供从Pest语法到Amazon Ion的简单转换。

示例

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