c - 将 C 解析为 Ocaml

标签 c parsing gcc ocaml llvm

我想从 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/

相关文章:

c++ - 如何使用 MATRIX_EVAL 启用基于编译器的构建矩阵行?

c - 错误 : format'%s' expects argument of type 'char *' , 但参数 2 的类型为 'int' [-Wformat=]

c - C 中的值是 double 的

ios - 快速解析JSON不一致

javascript - UTC 日期字符串是否需要格式说明符 "Z",即使该字符串包含时间偏移?

html - PHPMailer 错误 - HTML 电子邮件错误

c - 升级后 gcc 编译失败 - 找不到共享文件对象 (libmpc.so.2)

C - 检查矩阵[x][y]周围的位置

c - 是否有一种排序算法使用二叉树按位排序?

c - fork()-ing a'la popen 时检测到找不到程序