1장. 컴파일러 개론
1.1 프로그래밍 언어
- 특수 목적 언어(simulation, DB query) vs. 일반 범용 언어
- 저급 언어 vs. 고급 언어
- 어셈블리어 -- mnemonic 코드, 10110101 -> ADD
- Ada -- 실시간 응용(real-time application)에 적합하도록 설계
개발 목적: reliability, simplicity, modularity, efficiency
특징: package, generic features, 분리 컴파일, multi-tasking
- Java -- 인터넷 분산환경에서 효과적으로 응용 프로그램 작성
특징: class, inheritance, polymorphism
기능: 예외처리, thread
- JIT -- AOT + interpretation의 장점을 취한 것
cached & reused
1.2 번역기와 컴파일러
Preprocessor의 기능
- PL에 유용한 기능들을 추가시킴으로써 언어를 확장.
- 주요 기능: macro, compile-time library 포함, 조건부 컴파일 기능
1.3 컴파일러의 일반적인 구조
Token -- 문법적으로 의미를 갖는 최소의 단위
program is "a sequence of tokens"
특수 형태(keyword, 연산자, 구분자) vs. 일반 형태(명칭, 상수)
1.4 컴파일러 자동화 도구
컴파일어 제작을 도와주는 도구 -- 컴파일러 생성기, 컴파일러-컴파일러
- lex, yacc