抽象構文木
抽象構文木は具象構文木とは異なり、プログラムの意味に関係ない部分を省略する。そのような省略の例としては括弧の省略があげられる。抽象構文木では、その自然な木構造によって結合は自明であるから、グループ化のための括弧などは意味的に不要である。変数名などの名前なども、識別できればよいので何らかのIDのようなもので構わない。ただし現実的にはエラーへの対応などが必要なので、シンボルテーブルの逆引きなどによって対応することもある。逆に理論的には、ド・ブラウン・インデックスのようにインデックス値にしてしまえることもある。
抽象構文木は、具象構文木から「抽象して」作られることもあれば、構文解析フェーズで直接いきなり作ってしまうこともある。
理論的な観点からは、たとえばソースコード上の位置(何行目の何カラム目など)といった具象の情報は言語処理系には不要であり、抽象構文木には無くてもよいのだが、実践的には、エラーを見つけた時にプログラマに親切なエラーメッセージを出力するためなど、重要な情報であり、時には処理系のフロントエンドではなくバックエンドでも必要なこともある。