はまやんはまやんはまやん

hamayanhamayan's blog

ClangでASTを出力する

概要

  • ClangではCやC++のコードをASTとして出力してくれる機能がある
  • AST: Abstract Syntax Tree, 抽象構文木
  • 資料1 資料2 資料3
  • 2017/06/05時点での情報です

ClangでASTを出力するには

clang -Xclang -ast-dump -fsyntax-only sample.c

とすれば出る。

ASTの構成要素

Decl : Declare, 宣言

  • FunctionDecl : 関数宣言
  • ParamVarDecl : 関数の引数の宣言
  • VarDecl : 変数の宣言

Stmt : Statement, 文

  • CompoundStmt : ブロック文
  • DeclStmt : 変数の宣言文(VarDeclから成る)
  • ForStmt : For文
  • IfStmt : If文
  • ReturnStmt : Return文

Expr : Expression, 式

  • CStyleCastExpr : キャスト式
  • ImplicitCastExpr : 暗黙キャスト式
  • CallExpr : 関数呼び出し式
  • DeclRefExpr : 変数呼び出し式
  • BinaryOperation : 二項演算子
  • UnaryOperation : 単項演算子
  • ArraySubscriptExpr : 配列表現のための式
  • MemberExpr : 構造体などのメンバを指す式

Literal : リテラル

  • IntegerLiteral : 整数
  • StringLiteral : 文字列