4

我在一个开发特定源到源编译器的项目中。在这个阶段,我需要在 C 源代码中找到变量的类型。例如,如果代码是,c[i]=j*f[k]+p;我应该找到 、 、 、 、 和变量的类型cijfkp定义int*float任何其他类型)。有什么工具可以做到这一点吗?如果有多个工具,我更喜欢基于 python 的工具。

提前谢谢你。

4

2 回答 2

4

您可以使用pycparser编写自己的解析器,您可以在此处找到更多示例

from pycparser import c_parser
parser = c_parser.CParser()
text = 'int x; int y; float z;'
ast = parser.parse(text, filename='<none>')
ast.show()
FileAST: 
  Decl: x, [], [], []
    TypeDecl: x, []
      IdentifierType: ['int']
  Decl: y, [], [], []
    TypeDecl: y, []
      IdentifierType: ['int']
  Decl: z, [], [], []
    TypeDecl: z, []
      IdentifierType: ['float']
于 2012-12-30T08:43:58.003 回答
2

您应该能够使用 llvm-tools 从源代码创建AST,然后分析 AST。除了你的任务是编写类似 llvm-tools 的东西 :)

这是一个如何使用 llvm-bindings for python 分析 c 文件的示例:

http://www.mdevan.org/llvm-py/examples.html

于 2012-12-30T08:14:14.957 回答