この C コードのフラグメントを解析しようとしています。
void foo(const int *bar, int * const baz);
pycparserextGnuCParser
の一部を使用しています。
この回答に基づいてPtrDecl
、いくつかの s が表示されると予想しast.show()
ましたが、結果の解析ツリーから得られるものは次のとおりです。
FileAST:
Decl: foo, [], [], []
FuncDecl:
ParamList:
Decl: bar, ['const'], [], []
TypeDeclExt: bar, ['const']
IdentifierType: ['int']
Decl: baz, [], [], []
TypeDeclExt: baz, []
IdentifierType: ['int']
TypeDecl: foo, []
IdentifierType: ['void']
baz
によって出力されるデータには、「への const ポインター」の痕跡(または「ポインター性」)int
がないことに注意してください。この違いは によるものですか?const
ast.show()
GnuCParser
baz
AST からの型を知るにはどうすればよいですか? 私の実際の C コードには GNU パーサーが必要です。pycparserext バージョン 2016.1 を使用しています。
更新: GitHub で pycparserext の問題を作成しました。