我想从 C 代码中获取抽象语法树 (AST),并将其转换为 OCaml 值,以便我可以使用普通 OCaml 程序进一步处理解析后的代码。
我想使用 GCC,使用钩子(Hook)获取 AST(在 GIMPLE 中),并将 GIMPLE 代码转换为 Ocaml。
但我想知道是否有其他方法,或者是否有人已经做过类似的事情。 (实际上我还没有发现太多......)
我不想求助于使用 CIL。它是用于 C 代码的 OCaml 解析器,但它不包含 GCC 具有的所有优化。 (我特别需要比在 CIL 中实现的别名分析更深入的别名分析)。
LLVM 是一个值得关注的好主意吗?也许已经完成了?
有更好的主意吗?
最佳答案
如果您的 CIL 问题是所提供的别名分析的精度,请查看 Frama-C .它基于 CIL 但提供了一个 precise value analysis适用于指针。值(value)分析使其结果在模块化架构中可用。
关于c - 将 C 解析为 Ocaml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5195500/