2个版本
0.1.1 | 2022年12月9日 |
---|---|
0.1.0 | 2022年11月24日 |
1428 in 数据结构
22KB
479 行
图建模语言(GML)解析器(https://en.wikipedia.org/wiki/Graph_Modelling_Language)。它可以有效地读取并解析GML文件到包含节点和边的图数据结构。
请查看以下文档:https://docs.rs/gml_parser/latest/gml_parser/
如果您有想法,我愿意接受改进此项目的PR。
如果您能找到合适的GML语法规范,那将非常感激。我只是根据我对GML的理解编写了语法文件。
lib.rs
:
此crate允许读取图建模语言(GML)文件。
此crate首先将GML解析为[GMLObject]和[GMLValue]。然后可以将根GMLObject转换为包含[Node]和[Edge]的[Graph]。
示例
use gml_parser::{GMLObject, Graph};
let data = r#"
graph [
id 4
node [
id 0
]
node [
id 1
]
edge [
source 1
target 0
label "Edge"
]
]"#;
let root = GMLObject::from_str(data).unwrap();
let graph = Graph::from_gml(root).unwrap();
assert_eq!(graph.id, Some(4));
assert_eq!(graph.nodes.len(), 2);
assert_eq!(graph.edges.len(), 1);
局限性
- 此实现可能比较脆弱,GML也不是一个非常挑剔的标准
- 我们在解析时复制了数据,这可能在非常大的图上对性能产生影响
依赖项
~4–6MB
~109K SLoC