위키득계정 ↗
기술

추상 구문 트리

추상 구문 트리기술
영문명
Abstract syntax tree
약칭
AST
표현 대상
문과 식 등 구문 구조
활용
컴파일, 분석, 코드 변환 등
추상 구문 트리는 프로그램의 핵심 구문 구조를 나무 형태로 표현한 자료 구조다. AST라고 줄여 부른다. 소스 코드의 모든 글자와 공백을 그대로 보관하는 표현이 아니라 문과 식의 관계를 중심으로 구성된다.

글자보다 관계 표현하기

2+3×4의 구조를 덧셈 노드 아래에 숫자 2와 곱셈 부분을 두는 나무로 나타낼 수 있다. 이때 각 글자의 위치보다 어떤 식이 어느 식의 자식인지가 중요하다. 구조는 연산이 결합하는 방식을 드러낸다.

추상적이라는 의미

괄호와 구분자 등의 정보는 이미 나무의 관계로 표현되므로 별도 노드에서 생략될 수 있다. 다만 무엇을 남기고 생략하는지는 AST 설계에 따라 다르다. 모든 언어와 도구가 같은 노드 종류를 쓰는 것은 아니다.

원문을 완전히 되찾을 수 있는가

주석과 공백, 특정 표기 방식이 보존되지 않았다면 AST만으로 원래 파일을 글자 단위로 복원할 수 없다. 프로그램의 구조를 같은 의미로 출력하는 일과 원문을 정확히 재현하는 일은 다르다.

구조 분석과 의미 분석

AST는 프로그램을 순회하고 특정 문이나 식을 찾는 데 유용하다. 그러나 나무를 얻었다는 사실만으로 자료형과 이름의 의미, 실행 결과가 모두 결정되는 것은 아니다. 추가 정보와 분석 단계가 필요할 수 있다.

관련 문서

구문 분석 / 컴파일러 / 이진 트리 / 자료 구조 / 프로그래밍 언어