---
title: "컴파일러 만들고 싶으면 이 논문 두 편만 읽어라 (2008)"
published: 2026-04-15T09:41:19.000Z
canonical: https://jeff.news/article/1736
---
# 컴파일러 만들고 싶으면 이 논문 두 편만 읽어라 (2008)

컴파일러 교재가 너무 어렵다는 통념을 깨는 2008년 글. Jack Crenshaw의 'Let's Build a Compiler!'와 Nanopass Framework 논문 두 편이면 실제로 동작하는 컴파일러를 만들 수 있다고 추천한다.

- 컴파일러 교재 대부분은 범위가 너무 넓어서 다 읽어도 실제로 컴파일러를 만들기 어려움
  - 드래곤북 같은 유명 교재도 정규표현식→상태머신 변환, 문법 분류 등 이론이 두껍게 나옴
  - 이런 책들 때문에 "컴파일러는 어렵다"는 미신이 생김
- 추천 1: Jack Crenshaw의 **Let's Build a Compiler!** (1988)
  - 터보 파스칼 수준의 싱글패스 컴파일러를 직접 만듦
  - 파싱과 코드 생성을 섞어서 처리하고, 기초 최적화만 적용함
  - 원래 Pascal이지만 C 버전, Forth 버전도 있음
  - 단점: AST 같은 내부 표현이 없음 — Python, Ruby, Lisp, Haskell처럼 트리 다루기 쉬운 언어라면 직접 추가해도 별로 어렵지 않음
- 추천 2: **A Nanopass Framework for Compiler Education** (Sarkar, Waddell, Dybvig)
  - 핵심 아이디어: 컴파일러 = 내부 표현에 대한 단순한 변환의 연쇄
  - 변환을 합치지 말고, 수십~수백 개의 패스로 최대한 쪼개라
  - 각 패스의 입출력을 명세하는 프레임워크를 제공함 (Scheme 구현)
- 컴파일러 한두 개 만들어본 다음에 드래곤북을 읽어도 늦지 않음 — 아예 필요 없을 수도 있음

## 핵심 포인트

- 대부분의 컴파일러 교재는 범위가 너무 넓어 실제 구현까지 이어지지 않음
- 추천 1: Crenshaw의 시리즈 — 싱글패스, 파싱과 코드생성 혼합, 기초 최적화
- 추천 2: Nanopass Framework — 컴파일러 = 단순한 변환의 연쇄, 패스를 수십~수백 개로 쪼개라
- 드래곤북은 컴파일러 하나 만들어본 다음에 읽어도 됨

## 인사이트

18년 전 글이지만 '일단 만들어봐라'는 메시지는 여전히 유효하다. 특히 Nanopass 개념은 현대 컴파일러 설계에서도 핵심 패턴이다.
