나는 C 코드의 조각을 구문 분석하려고 해요 :GnuCParser로 포인터 인수 찾기?
void foo(const int *bar, int * const baz);
GnuCParser
, pycparserext의 일부를 사용하여. this answer을 바탕으로
좀 PtrDecl
의를 볼 것으로 예상하지만, 여기에 내가 결과 파스 트리에 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
하는 "int
을 가리키는 const 포인터는"하지 않습니다 방법 ast.show()
에 의해 인쇄 된 데이터에 const
(또는 "pointeryness")의 흔적이 있습니다. 이 차이는 GnuCParser
때문에 발생합니까?
AST에서 baz
의 유형을 어떻게 알 수 있습니까? 내 실제 C 코드는 GNU 파서가 필요하다. pycparserext 버전 2016.1을 사용하고 있습니다.
업데이트 : pycparserext issue on GitHub을 만들었습니다.
맞아, 그게 내가 기대했던 것과 같다. 그렇다면 GnuCParser로 뭔가있는 것 같습니다. 이상한. – unwind