#graphviz #ast-parser #following #file #dotfiles #struct #dot-graph

graphviz_parser

Graphviz 文件的 AST 定义和解析器

1 个不稳定版本

0.1.0 2022 年 1 月 21 日

#32#ast-parser


用于 graph-algo-ptas

MIT 许可证

47KB
1K SLoC

Dot 解析器 - Graphviz 文件的 AST & 解析器

安装

将以下内容添加到您的 cargo.toml 文件中

dot_parser= 0.1

示例用法

在核心上,此包暴露了一个 GraphViz 结构体,它表示描述给定 graphviz 文件的 AST 的根。作为一个使用示例,我们可以编写以下内容


use std::str::FromStr;
use graphviz_parser::DotGraph;

let graph_text = "digraph G { A -> B }";
let result = DotGraph::from_str(graph_text).unwrap();

使用 AST

一旦解析,ast 就会提供有关原始底层 graphviz 图的信息 - 例如,以下代码读取顶层行中呈现的节点 ID

use graphviz_dot_parser::DotGraph;
use graphviz_dot_parser::ast_nodes::Statement::Node;
use std::str::FromStr;

let dot_graph = DotGraph::from_str("graph G { a; b; c; }").unwrap();
let mut node_ids = vec![];
if let DotGraph::Directed(graph) = dot_graph {
   for statement in graph.statements {
      if let Node(n) = statement {
            node_ids.push(n.id);
      }
   }
   assert_eq!(node_ids, vec!["a", "b", "c"]);
}

提交错误报告

由于此项目仍在开发中,如果您遇到问题,请提交错误报告!请包括您尝试解析的原始 graphviz 字符串,以便我们更快地调试问题

依赖关系

~1.5MB