抽象構文(abstract syntax)は、情報通信におけるメッセージや
コンパイラにおけるプログラムなど、さまざまなデータの表現形式を指します。この表現形式は、特定の
コンピュータシステムに依存する構造やデータエンコーディング方式から独立しており、データの物理的な表現形式にも左右されないという特徴を持ちます。
プログラミング言語処理系において、抽象構文は内部表現として頻繁に利用されます。特に
抽象[[構文木]](abstract syntax tree)は、
ソースコードを解析し、その構造を木構造で表現したものです。この木構造は、文、式、識別子といった分類用語を用いて定義され、
ソースコードの具体的な構文(具象構文)とは独立した存在となります。ただし、抽象構文と具象構文は密接に関連していることが多く、
抽象[[構文木]]は具象
構文木(parse tree)から派生することが一般的です。
具象
構文木は、
ソースコードのテキストをそのまま反映した構造を持つ木であり、括弧などの構文要素も含まれます。一方で、
抽象[[構文木]]は、プログラムの本質的な構造のみを表現することを目指しており、括弧などの構文解析には必要なものの、プログラムの意味には直接関係しない要素は排除されます。この抽象化によって、プログラムの分析や変換がより容易になります。例えば、
コンパイラは
抽象[[構文木]]を元に最適化やコード生成を行います。
抽象構文は、高階抽象構文やASN.1など、他の様々な情報表現技術とも関連しています。高階抽象構文は、より抽象度の高いレベルでプログラム構造を表現し、ASN.1はネットワークプロトコルにおけるデータ構造を定義するための標準規格です。
この文章は、2008年11月1日以前にFree On-line Dictionary of Computingから取得した項目を元に、GFDL(
GNU Free Documentation License)バージョン1.3以降の再ライセンス条件に基づいて作成されました。これにより、情報の自由な共有と再利用が促進されます。