파싱(Parsing) : 파싱 과정에서 컴파일러는 소스 코드를 토큰화하여, 이를 트리 구조인 AST로 재구성합니다. 각 노드는 변수 선언, 함수 호출, 연산자 사용 등 코드의 기본 구성 요소를 나타냅니다. 이 단계에서는 코드의 구문적 구조가 트리 형태로 변환됩니다.
변환(Transformation) : 생성된 AST를 기반으로 특정 작업(예: 타입 검사, 최신 문법을 오래된 문법으로 변환 등)을 수행합니다. 이 과정에서 AST가 수정되거나 새로운 AST로 대체될 수 있습니다. 변환된 AST는 코드의 더 효율적인 실행 또는 다른 버전의 문법으로의 변환을 가능하게 합니다.
최적화(Optimization) : 코드의 실행 효율성을 높이기 위해 AST를 분석하고 수정하는 과정입니다. 예를 들어, 사용되지 않는 코드를 제거하거나, 실행 속도를 향상시킬 수 있는 방식으로 코드를 재구성합니다.
코드 생성(Code Generation) : 최종적으로 수정된 AST를 바탕으로 실행 가능한 코드를 생성합니다. 이 단계에서는 AST의 각 노드를 대상 언어의 코드로 변환합니다. 이 과정을 통해 소스 코드가 기계어, 바이트코드 또는 다른 고수준 언어의 코드로 변환됩니다. 코드 생성은 AST가 실제로 실행 가능한 형태로 “번역”되는 과정입니다.