1个不稳定版本
0.1.0 | 2023年10月28日 |
---|
#2216 in 编码
36 每月下载量
在 egglog 中使用
2.5MB
389 代码行
序列化ur e图
主要用于 extraction gym rn
egg片段
有一天egg将原生支持导出此格式,但目前为止你可以使用这个
pub fn egg_to_serialized_egraph<L, A>(egraph: &EGraph<L, A>) -> egraph_serialize::EGraph
where
L: Language + Display,
A: Analysis<L>,
{
use egraph_serialize::*;
let mut out = EGraph::default();
for class in egraph.classes() {
for (i, node) in class.nodes.iter().enumerate() {
out.add_node(
format!("{}.{}", class.id, i),
Node {
op: node.to_string(),
children: node
.children()
.iter()
.map(|id| NodeId::from(format!("{}.0", id)))
.collect(),
eclass: ClassId::from(format!("{}", class.id)),
cost: Cost::new(1.0).unwrap(),
},
)
}
}
out
}
别忘了在序列化后的egraph中添加到 root_eclasses
!
可视化
查看 ./tests-viz
目录以使用Graphviz查看所有测试用例的视觉表示。
要重新创建它们,从本仓库的根目录运行 make tests-viz
。你需要安装 Graphviz。
依赖项
~1–11MB
~117K SLoC