추상 구문 트리
추상 구문 트리 (Abstract Syntax Tree, AST)는 프로그래밍 언어의 소스 코드의 추상적인 구조를 표현하는 트리 형태의 자료 구조이다. 파서(parser)가 소스 코드를 분석하여 생성하며, 소스 코드의 구문 구조를 나타낸다.
AST는 소스 코드의 모든 세부적인 정보를 담고 있는 구문 트리(Concrete Syntax Tree 또는 Parse Tree)와 달리, 의미 없는 요소(예: 괄호, 세미콜론 등)를 제거하고 핵심적인 의미 구조만을 표현한다. 따라서 컴파일러나 인터프리터가 소스 코드를 이해하고 처리하는 데 더욱 용이하게 사용될 수 있다.
AST의 각 노드는 소스 코드의 구성 요소(예: 연산자, 피연산자, 키워드, 식별자 등)를 나타내며, 노드 간의 관계는 해당 구성 요소들의 문법적인 관계를 반영한다. 예를 들어, "a + b * c"라는 코드는 AST에서 "+" 노드를 루트로 갖고, 왼쪽 자식으로 "a" 노드, 오른쪽 자식으로 "" 노드를 갖는 형태로 표현될 수 있다. "" 노드는 "b"와 "c" 노드를 자식으로 갖는다.
AST는 컴파일러 최적화, 코드 분석, 자동 코드 생성, 리팩토링 등 다양한 분야에서 활용된다. 예를 들어, 컴파일러는 AST를 사용하여 코드의 의미를 분석하고, 최적화를 수행하여 실행 속도를 향상시킬 수 있다. 또한, AST는 소스 코드를 다른 언어로 변환하는 트랜스파일러(transpiler)의 핵심적인 자료 구조로 사용되기도 한다.