1个不稳定版本

0.1.0 2023年10月28日

#2216 in 编码

36 每月下载量
egglog 中使用

MIT 许可证

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