4

特定のソースからソースへのコンパイラを開発するプロジェクトに参加しています。この段階で、C ソース コード内の変数の型を見つける必要があります。たとえば、コードが の場合、、、、、および変数の型 ( 、、およびソースで定義されているその他の型)c[i]=j*f[k]+p;を見つける必要があります。そうするためのツールはありますか?複数のツールがある場合、私は Python ベースのツールを好みます。cijfkpint*float

よろしくお願いします。

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のようなものを書くことです:)

Python の llvm-bindings を使用して c ファイルを分析する方法の例を次に示します。

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

于 2012-12-30T08:14:14.957 に答える