特定のソースからソースへのコンパイラを開発するプロジェクトに参加しています。この段階で、C ソース コード内の変数の型を見つける必要があります。たとえば、コードが の場合、、、、、および変数の型 ( 、、およびソースで定義されているその他の型)c[i]=j*f[k]+p;
を見つける必要があります。そうするためのツールはありますか?複数のツールがある場合、私は Python ベースのツールを好みます。c
i
j
f
k
p
int*
float
よろしくお願いします。
特定のソースからソースへのコンパイラを開発するプロジェクトに参加しています。この段階で、C ソース コード内の変数の型を見つける必要があります。たとえば、コードが の場合、、、、、および変数の型 ( 、、およびソースで定義されているその他の型)c[i]=j*f[k]+p;
を見つける必要があります。そうするためのツールはありますか?複数のツールがある場合、私は Python ベースのツールを好みます。c
i
j
f
k
p
int*
float
よろしくお願いします。
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']
llvm-tools を使用してソース コードからASTを作成し、AST を分析できるはずです。あなたの仕事を除いて、llvm-toolsのようなものを書くことです:)
Python の llvm-bindings を使用して c ファイルを分析する方法の例を次に示します。