Chapter 01 컴파일러의 개요 . 015
01 컴파일러의 필요성 . 017
02 프로그래밍 언어 . 020
1 수치 계산용 언어 . 020
2 사무 처리용 언어 . 021
3 인공지능 언어 . 021
4 시스템 프로그래밍 언어 . 022
5 기타 언어 . 022
6 프로그래밍 언어의 기본 개념 . 024
03 번역기의 종류 . 030
Chapter 02 간단한 컴파일러의 구조 . 039
01 컴파일러의 논리적 구조 . 041
1 개요 . 041
2 논리적 구조 . 043
02 컴파일러의 물리적 구조 . 061
Chapter 03 형식 언어와 유한 오토마타 . 067
01 형식 언어 . 069
02 형식 문법 . 074
03 문법 표기법 . 086
1 정규 표현 . 086
2 문법 도표 . 089
3 BNF 표기법 . 091
4 EBNF 표기법 . 092
04 유한 오토마타 . 094
1 유한 오토마타 . 095
2 NFA에서 DFA로의 변환 . 108
3 DFA의 상태수 최소화 . 118
4 정규 문법, 정규 표현, 유한 오토마타의 동치 관계 . 122
Chapter 04 어휘 분석 . 133
01 어휘 분석의 개요 . 135
02 토큰의 인식 . 138
1 식별자의 인식 . 138
2 예약어의 인식 . 139
3 정수의 인식 . 139
4 실수 상수의 인식 . 139
5 주석 처리 . 140
03 어휘 분석기의 설계 및 구현 . 142
Chapter 05 문맥자유 문법과 푸시다운 오토마타 . 153
01 문맥자유 문법 . 155
02 파스 트리 . 156
03 모호한 문법 . 164
04 문법 변환 . 171
1 불필요한 생성 규칙의 제거 . 171
2 ε-생성 규칙의 제거 . 176
3 단일 생성 규칙의 제거 . 178
4 좌인수분해 . 181
5 좌재귀의 제거 . 182
05 푸시다운 오토마타 . 185
Chapter 06 구문 분석 . 193
01 구문 분석의 개요 . 195
02 하향식 구문 분석 . 197
1 FIRST와 FOLLOW . 199
2 재귀적 하강 구문 분석 . 209
3 예측 구문 분석 . 212
03 상향식 구문 분석 . 217
1 이동-감축 구문 분석 . 219
2 연산자 우선순위 구문 분석 . 222
3 LR 구문 분석 . 226
04 모호한 문법의 사용과 에러 처리 루틴 . 258
Chapter 07 의미 분석과 형 검사 . 273
01 의미 분석의 개요 . 275
02 기호표 . 277
03 속성 문법 . 282
04 형 검사 . 286
1 자료형의 종류 . 286
2 형 시스템 . 288
3 형 변환 . 288
Chapter 08 중간 언어와 중간 코드 생성 . 293
01 중간 언어 . 295
1 중간 언어의 개념 . 295
2 중간 언어의 종류 . 297
02 구문 지시적 번역 . 308
03 중간 코드 생성 . 312
1 논리식 . 312
2 치환문 . 318
Chapter 09 구조적 자료형과 실행 시간 환경 . 325
01 구조적 자료형 . 327
1 레코드 . 327
2 배열 . 329
02 메모리 구성 . 332
03 메모리 할당 전략 . 339
1 정적 메모리 할당 . 339
2 스택 메모리 할당 . 341
3 힙 메모리 할당 . 345
04 매개변수 전달 방법 . 347
1 값 호출 . 347
2 참조 호출 . 348
3 이름 호출 . 349
4 값-결과 호출 . 350
Chapter 10 코드 최적화 . 355
01 코드 최적화 . 357
02 기본 블록과 흐름 그래프 . 360
1 기본 블록 . 360
2 제어 흐름 그래프와 DAG . 363
3 흐름 분석 . 370
03 최적화 기법 . 372
1 핍홀 최적화 기법 . 372
2 지역 최적화 기법 . 375
3 루프 최적화 기법 . 378
4 전역 최적화 기법 . 382
5 기계 종속적 최적화 기법 . 384
Chapter 11 병렬성과 지역성을 위한 최적화 . 389
01 병렬 처리 . 391
1 병렬 처리 시스템 . 393
2 병렬 처리에 대한 여러 가지 개념 . 395
02 자료 종속과 자료 종속 분석 . 401
1 자료 종속 . 401
2 자료 종속 분석 . 405
03 루프 변환 . 410
1 루프 융합 . 410
2 루프 분리 . 412
3 루프 역순 . 414
4 루프 교환 . 415
5 루프 기울임 . 416
6 스트립 마이닝 . 418
7 루프 타일링 . 419
Chapter 12 목적 코드 생성 . 423
01 목적 코드 생성의 개념 . 425
02 트리-패턴 매칭 기법 . 428
03 목적 코드 생성 . 433
1 산술식에 대한 목적 코드 생성 . 433
2 논리식에 대한 목적 코드 생성 . 443
04 레지스터 할당과 배정 . 447
1 지역 레지스터 할당과 배정 . 448
2 전역 레지스터 할당과 배정 . 449
3 그래프 착색에 의한 레지스터 할당 . 450
Chapter 13 렉스와 야크 . 455
01 렉스와 야크 . 457
1 렉스 . 457
2 야크 . 458
02 렉스와 야크의 입력 파일 형식 . 459
1 렉스의 입력 파일 형식 . 459
2 야크의 입력 파일 형식 . 463
03 플렉스와 바이슨 설치 방법 . 466
04 플렉스 사용법 . 468
05 바이슨 사용법 . 47