---
title: "무료 컴파일러 교재 ‘컴파일러와 언어 설계 입문’ 2판 공개"
published: 2026-07-05T11:54:16.000Z
canonical: https://jeff.news/article/4676
---
# 무료 컴파일러 교재 ‘컴파일러와 언어 설계 입문’ 2판 공개

노터데임 대학교 Douglas Thain 교수가 CSE 40243 컴파일러 수업을 위해 만든 무료 온라인 교재야. C와 자료구조, 컴퓨터 구조를 어느 정도 아는 학부생이 한 학기 동안 C와 비슷한 언어를 받아 X86 또는 ARM 어셈블리로 변환하는 간단한 컴파일러를 만드는 흐름으로 구성돼. 스캐닝, 파싱, 추상 구문 트리, 의미 분석, 중간 표현, 코드 생성, 최적화까지 챕터별 PDF와 예제 코드가 제공됨.

- ‘Introduction to Compilers and Language Design’은 무료로 볼 수 있는 컴파일러 입문 교재임
  - 노터데임 대학교 CSE 40243 컴파일러 수업을 위해 Douglas Thain 교수가 만든 자료임
  - 챕터별 PDF를 바로 볼 수 있고, 원하면 하드커버나 페이퍼백 책도 구매할 수 있음

- 목표는 한 학기 동안 간단한 컴파일러를 직접 만들어보는 것임
  - 입력 언어는 C와 비슷한 형태의 언어임
  - 출력은 실제로 동작하는 X86 또는 ARM 어셈블리 언어를 목표로 함
  - 대상 독자는 C 프로그래밍 경험이 있고, 자료구조와 컴퓨터 구조를 들은 학부생 정도로 잡혀 있음

- 목차는 컴파일러 파이프라인을 거의 정석대로 따라감
  - 스캐닝, 파싱, 실제 파싱 구현, 추상 구문 트리, 의미 분석을 다룸
  - 이후 중간 표현, 메모리 구조, 어셈블리 언어, 코드 생성, 최적화로 이어짐
  - 부록에는 샘플 코스 프로젝트, B-Minor 언어, 코딩 컨벤션도 포함됨

- 개인 및 학술 용도로 PDF를 내려받고 출력해서 쓰는 건 허용됨
  - 상업적 인쇄나 배포는 금지됨
  - 교재를 로컬에 복사해 배포하기보다는 최신 버전을 볼 수 있게 공식 페이지로 안내해달라는 조건이 붙어 있음

- 예제 코드 저장소도 같이 제공됨
  - 스캐너와 파서 예제, 프로젝트 컴파일러의 시작 코드 구조가 들어 있음
  - 스캐너, 파서, 타입체커, 코드 생성기 각 단계별 샘플 테스트 케이스도 제공됨
  - 그냥 읽는 책보다 수업이나 스터디에서 따라 만들기 좋은 구성임

> [!TIP]
> 컴파일러를 직접 만들 계획이 없어도 파서, 타입 검사, 중간 표현을 한 번 구현해보면 언어 도구, 정적 분석기, 코드 생성 도구를 볼 때 감이 훨씬 빨라짐.

---

## 기술 맥락

- 이 교재의 선택은 “컴파일러 이론을 설명한다”보다 “작게라도 끝까지 만들어본다”에 가까워요. 그래서 스캐닝과 파싱에서 멈추지 않고, C 유사 언어를 실제 X86 또는 ARM 어셈블리로 내보내는 흐름까지 가져가요.

- 학부생 대상이라고 해서 가벼운 문법 소개만 하는 건 아니에요. 추상 구문 트리, 의미 분석, 중간 표현, 메모리 조직, 코드 생성이 순서대로 이어지기 때문에 컴파일러가 왜 여러 단계로 나뉘는지 자연스럽게 보게 돼요.

- 예제 저장소와 테스트 케이스가 붙어 있는 점도 중요해요. 컴파일러는 한 단계가 틀리면 뒤 단계 오류처럼 보이는 경우가 많아서, 스캐너와 파서, 타입체커를 단계별로 검증할 수 있어야 학습이 덜 고통스럽거든요.

- X86과 ARM 어셈블리를 타깃으로 삼는 것도 실전 감각에 도움이 돼요. 고수준 언어의 변수, 함수 호출, 메모리 배치가 결국 어떤 저수준 구조로 내려가는지 직접 확인할 수 있기 때문이에요.

## 핵심 포인트

- 개인·학술 용도로 PDF를 내려받고 출력해 사용할 수 있음
- 한 학기 분량의 컴파일러 제작 입문서로 C 유사 언어에서 X86 또는 ARM 어셈블리까지 다룸
- 예제 저장소에는 스캐너, 파서, 프로젝트 시작 구조, 단계별 테스트 케이스가 포함됨

## 인사이트

요즘은 컴파일러를 직접 만들 일이 드물어 보여도, 파서, 타입 검사, 중간 표현, 최적화 감각은 개발자 체급을 꽤 올려줌. 무료 교재에 프로젝트 구조와 테스트까지 붙어 있다는 점이 실습용으로 쓸 만함.
