Graph Frama-c生成图形对象而不是点文件

Graph Frama-c生成图形对象而不是点文件,graph,frama-c,Graph,Frama C,我试图找出两个程序是否是gamma同构的,为此我借助Jgrapht库。现在,我必须生成程序的程序依赖图,并将其捕获为图形对象。使用frama-c,我们可以生成PDG。我使用frama-c-pdg-pdg dot graph-pdg print program.c生成程序的pdg,输出为点格式。我必须解析点格式才能得到图形。取而代之的是,我将能够像图形对象一样掌握图形数据结构,而不是点文件 从技术上讲,您应该能够使用Frama-C的Db.Pdg模块中导出的函数提取所需的信息。特别是, Db.Pdg

我试图找出两个程序是否是gamma同构的,为此我借助Jgrapht库。现在,我必须生成程序的程序依赖图,并将其捕获为图形对象。使用frama-c,我们可以生成PDG。我使用
frama-c-pdg-pdg dot graph-pdg print program.c
生成程序的pdg,输出为点格式。我必须解析点格式才能得到图形。取而代之的是,我将能够像图形对象一样掌握图形数据结构,而不是点文件

从技术上讲,您应该能够使用Frama-C的
Db.Pdg
模块中导出的函数提取所需的信息。特别是,
Db.Pdg.iter_节点
允许您对由Pdg生成的所有节点(所有函数)进行iter,而
Db.Pdg.direct_*dpds
函数族将为您提供给定节点的直接子节点列表,这些子节点可以是所有节点,也可以仅是给定类型的子节点。更多信息可在Frama-C源文件中的
db.mli
文件中找到


也就是说,我不得不问你为什么要这么做。就我的搜索引擎所能告诉我的,
JGraphT
是一个Java库,上次我检查时,OCaml/Java绑定实现起来并不轻松,如果可能的话。此外,在我看来,
JGraphT
的类
DOTImporter
应该允许您或多或少地直接使用pdg的输出。

从技术上讲,您应该能够使用Frama-C的
Db.pdg
模块中导出的函数提取您想要的信息。特别是,
Db.Pdg.iter_节点
允许您对由Pdg生成的所有节点(所有函数)进行iter,而
Db.Pdg.direct_*dpds
函数族将为您提供给定节点的直接子节点列表,这些子节点可以是所有节点,也可以仅是给定类型的子节点。更多信息可在Frama-C源文件中的
db.mli
文件中找到

也就是说,我不得不问你为什么要这么做。就我的搜索引擎所能告诉我的,
JGraphT
是一个Java库,上次我检查时,OCaml/Java绑定实现起来并不轻松,如果可能的话。此外,在我看来,
JGraphT
的类
DOTImporter
应该允许您或多或少地直接使用pdg的输出