本文へスキップ

抽象構文木とは?

ちゅうしょうこうぶんき

抽象構文木とは、ソースコードの構文構造をツリー状のデータ構造で表現したもので、コンパイラや静的解析ツールがコードを理解・変換するために用います。

抽象構文木(Abstract Syntax Tree、AST)とは、プログラムソースコードを解析して得られる、文法的な構造をツリー形式で表現したデータ構造です。括弧や区切り文字など「構文の形だけに必要な要素」を除外し、意味的に重要なノード(変数・演算子・関数呼び出しなど)だけを残した「抽象的な」表現であることが名前の由来です。

コンパイラの処理フローにおけるASTの位置づけは次のとおりです。

  1. 字句解析器(レキサ)がソースコードをトークン列に分解する
  2. 構文解析器(パーサ)がトークン列を解析してASTを構築する
  3. 意味解析・最適化フェーズでASTを変換・検査する
  4. コード生成フェーズでASTから機械語や中間コードを出力する

ASTはコンパイラだけでなく、様々なツールで活用されています。

  • 静的解析ツール(linter):コードのパターンを検出してバグや規約違反を報告
  • コードフォーマッタ:ASTを解析して一貫したスタイルに整形
  • コード変換ツール(Babel等):新しい構文を古い環境向けに変換(トランスパイル)
  • IDEの補完・リファクタリング:コードの意味構造を把握して補完候補や名前変更を提供

ASTはプログラミング言語処理の根幹をなす概念であり、言語の設計・処理系の実装・開発ツールの構築すべてに深く関わっています。

使い方・例文

JavaScriptのトランスパイラBabelは、最新のJS構文をASTに変換した後、古いブラウザでも動作するコードに変換して出力します。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語