#parser #gml

gml_parser

快速简单的图建模语言(GML)解析器

2个版本

0.1.1 2022年12月9日
0.1.0 2022年11月24日

1428 in 数据结构

MIT 许可证

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