1. 컴파일러 개론 1-1. Compiler 정의 1-2. Language Processing System 1-3. 컴파일러 논리적구조 (phase) 1-4. Compiler Organization
1-1. Compiler 정의 A Compiler is a program that reads a program written in one language – source program – and translates it into an equivalent program in another language – target(object) program compiler Source program Target program error
1-2. Language processing system Skeletal source program(high) preprocessor Front-end 분석 형식이론 (확립) highlevel language compiler IL lowlevel, assembly language assembler Back-end 합성 경험적 이론 Relocatable machine code loader Absolute machine code (executable machine code)
1-3. 컴파일러 논리적 구조 (phase) Symbol table Error handle 전 반 부 Intermediate code generation (중간코드생성) Code generation (코드 생성) Code optimization (코드 최적화) Semantic analysis (의미분석) Syntax analysis (구문분석) Lexical analysis (어휘분석) Error handle Symbol table 전 반 부 후 반 부
Lexical analysis (어휘분석) source program을 읽어서 문법의 최소 단위인 token을 생성하는 일 A := B + 3 ; (token의 개수 : 6개) A, B (variable), := (assignment symbol), +(plus operator), 3(numeric), ;(delimeter) 특수형태 : keyword, operator, delimeter Token 일반형태 : identifier, 상수
Syntax analysis (구문분석) token을 읽어 오류를 검색하고 올바른 문장에 대한 구문구조를 만든다. A := B + 3 ; := Top-down 방식 A + B 3
Semantic analysis (의미분석) type checking(형 검사) 각 연산자가 원시 언어의 정의에 맞는 피연산자를 가지는가를 검사 Intermediate code generation (중간코드생성) 구문구조를 이용하여 코드 생성 또는 문법규칙에 의해 생성 예) A := B + 3; load 1 2 loc 3 add str 1 1 U code
Code optimazation (코드 최적화) 선택적 단계 (공간적, 시간적 효율화를 위해 필수적) Code generation (코드 생성) 목적코드 생성 assemble language, machine code Cross compiler 다른 machine에서 실행하기 위한 object program 생성
Intermediate code generator position := initial + rate * 60 Lexical analyzer Semantic analyzer Syntax analyzer Code generator Code optimizer Intermediate code generator position := initial + rate * 60 id1 := id2 + id3 * 60 := id1 + id2 * id3 60 inttoreal temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 temp1 := id3 * 60.0 id1 := id2 + temp1 MOVF id3, R2 MOVF #60.0, R2 MOVF id2, R2 ADDF R2, R1 MOVF R1, id1 position ... initial … rate ... 1 2 3 4 Symbol Table Translation of a statement
1-4. Compiler Organization Logical organization (phase) Physical organization (pass) Single Pass Multi pass 속도 증가 메모리 많이 사용 속도 저하 메모리 적게 사용