4个稳定版本

1.2.0 2023年1月5日
1.1.0 2023年1月5日
1.0.2 2023年1月4日

#2656解析器实现

MIT/Apache

51KB
1K SLoC

yscl-rs

YSCL的高效、最小化解析器。

示例

use yscl::prelude::*;

let map = parse_doc(r#"
kantu_version = "1.0.0"
name = "fibonacci"
license = [
    "MIT"
    "Apache-2.0"
]
dependencies = {
    yscl = "1.0.0"
    json = "1.0.0"
}
author = "xeklan (黒🐑)"
"#).unwrap();

let expected = Map {
    entries: vec![
        MapEntry {
            key: Identifier::new("kantu_version".to_owned()).unwrap(),
            value: Node::Atom(
                Atom {
                    value: "1.0.0".to_owned(),
                },
            ),
        },
        MapEntry {
            key: Identifier::new("name".to_owned()).unwrap(),
            value: Node::Atom(
                Atom {
                    value: "fibonacci".to_owned(),
                },
            ),
        },
        MapEntry {
            key: Identifier::new("license".to_owned()).unwrap(),
            value: Node::List(
                List {
                    elements: vec![
                        Node::Atom(
                            Atom {
                                value: "MIT".to_owned(),
                            },
                        ),
                        Node::Atom(
                            Atom {
                                value: "Apache-2.0".to_owned(),
                            },
                        ),
                    ],
                },
            ),
        },
        MapEntry {
            key: Identifier::new("dependencies".to_owned()).unwrap(),
            value: Node::Map(
                Map {
                    entries: vec![
                        MapEntry {
                            key: Identifier::new("yscl".to_owned()).unwrap(),
                            value: Node::Atom(
                                Atom {
                                    value: "1.0.0".to_owned(),
                                },
                            ),
                        },
                        MapEntry {
                            key: Identifier::new("json".to_owned()).unwrap(),
                            value: Node::Atom(
                                Atom {
                                    value: "1.0.0".to_owned(),
                                },
                            ),
                        },
                    ],
                },
            ),
        },
        MapEntry {
            key: Identifier::new("author".to_owned()).unwrap(),
            value: Node::Atom(
                Atom {
                    value: "xeklan (黒🐑)".to_owned(),
                },
            ),
        },
    ],
};

assert_eq!(expected, map);

文档

https://docs.rs/yscl/latest/yscl/

许可证

yscl-rs采用MIT许可证和Apache许可证(版本2.0)双重授权。

详情请见LICENSE-APACHELICENSE-MIT

无运行时依赖