컴파일러

최근 편집: 2023년 1월 6일 (금) 15:47

개요

컴파일러(영어: Compiler, 한국어: 해석기)는 어떤 프로그래밍 언어를 다른 프로그래밍 언어로 옮기는 작업인 컴파일을 수행하는 프로그램이다.

원본 프로그래밍 언어로 작성된 문서를 원시 코드(영어: Original Code), 컴파일 과정이 끝나고 생성되는 결과물을 목적 코드(영어: Object Code)라고 한다. 목적 코드는 경우에 따라 그대로 사용되기도 하지만 링커 프로그램을 이용해 다른 목적 코드와 병합하여 결과물을 내기도 한다. 링커 프로그램은 경우에 따라 컴파일러의 구성요소로 포함하기도 한다.

컴파일러의 핵심 구성 요소는 다섯 가지에서 여섯 가지 정도로 요약해볼 수 있다.

  1. 어휘 분석기(lexer): 해당 소스 코드에서 어떤 어휘가 어떤 순서에 따라 쓰였는지를 파악하고, 필요 없는 기호를 제거하며, 사용자가 선언한 식별자들의 사전을 만든다.
  2. 구문 분석기(parser): 어휘 분석기의 결과에 따라 정돈된 중간 코드를 입력받아, 해당 프로그래밍 언어의 문법(syntax)에 맞추어 파스 트리를 생성한다.
  3. 의미 분석기: 파스 트리를 토대로 프로그램의 의미(작동방식)를 규정하여 이진 코드로 만든다.
  4. 최적화: 파스 트리를 토대로 프로그램을 더 최적화할 수 있는지 확인하여, 파스 트리나 이진 코드를 변형한다.
  5. 링커 및 부수적 작업

역사

최초의 컴파일러는 1952년에 개발된 그레이스 호퍼 제독의 A-0 언어 컴파일러이다. 컴파일러라는 이름은 그레이스 호퍼 제독이 맨 처음 사용했다.

최적화 기능까지 탑재된 완전한 컴파일러는 1957년에 존 배커스가 개발한 포트란 컴파일러이다.

1972년에는 이후 매년 집계할 때마다 프로그래밍 언어 사용 순위 1~3순위를 오가는 데니스 리치C 언어의 컴파일러가 만들어졌다.

같이 보기