抽象構文木
抽象構文木(ちゅうしょうこうぶんぎ、英: abstract syntax tree、AST)は、通常の構文木(具象構文木あるいは解析木とも言う)から、言語の意味に関係ない情報を取り除き、意味に関係ある情報のみを取り出した(抽象した)木構造の木である。
理論的には、有限なラベル付き有向木である。また、演算子と変数や定数といったオペランドから成る数式などのようなものに対する抽象構文木を例にすると、分枝点は演算子、葉はオペランド(つまり、変数や定数)である。
抽象構文木は、構文解析によって直接得られる具象構文木と、最終的な意味表現などのデータ構造との、中間にあるものと位置付けることができる。コンパイラやインタプリタといったプログラミング言語処理系の場合は、中間表現のひとつであり、一部の最適化は抽象構文木の上の操作などによっておこなわれる。具象に対する構文がたとえばBNFによって規定されるように、抽象構文木についてもそれを規定する抽象構文というものが考えられる(が、あまり意識されることはない)。抽象構文木から例えば、バイトコードインタプリタに渡す場合にはバイトコードに、現代的なコンパイラの場合には静的単一代入形式などの、目的コードに近くより扱いやすい形式に変換(一種のコード生成)がおこなわれる。