Search
moon
sun
🏫

[컴파일러 구성] 1. 컴파일러 개요

Tags
CS
Compiler
Last edited time
2023/10/22 07:22
2 more properties
Search
🏫
[컴파일러 구성] 7. 구문분석 (4) SLR 구문분석
CS
Compiler
2023/11/27 15:05
🏫
[컴파일러 구성] 7. 구문분석 (4) SLR 구문분석
CS
Compiler
2023/11/27 15:05

1. 컴파일러의 개념과 번역기의 종류

1.1. 컴파일러의 개념

•
컴파일러
◦
언어를 번역한다 → 번역기
◦
0과 1로 된 기계어로 번역해주는 프로그램
•
번역기의 종류

1.2. 컴파일러와 인터프리터

•
컴파일러 기법 - 번역 후 실행
◦
효율적
◦
반복문 처리에 효과
◦
큰 기억장소 요구
•
인터프리터 기법 - 번역과 실행
◦
실행시간 김
◦
사용자와 대화식
◦
융통성

1.3. 컴파일러의 논리적 구조

•
영어번역과 컴파일러
•
컴파일러의 논리적 구조

2. 컴파일러의 논리적 구조

•
논리적 구조 6단계
◦
어휘분석
◦
구문분석
◦
의미분석
◦
중간코드
◦
최적화
◦
코드생성

2.1. 어휘분석

•
기본어휘가 문법에 맞는지 분석
•
어휘를 토큰으로 변환
•
연산자, 식별자, 예약어, 구분자, 상수
•
어휘분석
◦
Lexical Analysis, Scan
•
어휘분석기
◦
Lexical Analyzer, Scanner
•
어휘분석 예시

2.2. 구문분석

•
구문이 문법에 맞는지 분석한다.
•
분석결과를 파스트리로 출력
•
구문분석
◦
Syntax Analysis, Parse
•
구문분석기
◦
Syntax Analyzer, Parser
•
구문분석 예시
•
파스트리 (Parse Tree)
•
구문트리 (Abstract Syntax Tree) - AST

2.3. 의미분석

•
파스트리에 의미부여
•
실행 전 사전작업
•
자료구조정의, 혼합형연산, 기호표
•
ABC := E✽3.14 + ABC/E;

2.4. 중간코드

•
최적화를 위한 중간단계
•
후위표현
•
3 주소코드
◦
예) Quadruple
◦
(✽, E, 3.14, T0)
◦
( /, ABC, E, T1)
◦
( +, T0, T1, T2)
◦
( :=, T2, Φ, ABC)
•
U 코드
•
문법지시적변환

2.5. 최적화

•
효율화
•
수행시간 최소화
•
기억공간 최소화

2.6. 목적코드 생성

•
사용할 레지스터의 수
•
계산과정
•
명령어 종류

3. 컴파일러의 물리적 구조

3.1. 컴파일러의 논리적 구조와 물리적 구조

•
참고자료
◦
패스 - 컴파일러의 논리적 구조를 구현한 것

3.2. 1-패스 컴파일러

•
효율성(기계코드 변환)
•
실행속도가 빠름
•
backpatching
◦
IF (A OR B) AND C THEN

3.3. 2-패스 컴파일러

•
이식성 (Portability)
•
기계 독립적, 최적화
•
기억장소 절약
•
기계코드 표현 제약
•
실행속도가 느림

4. 간단한 컴파일러 실행 예

•
가정
◦
연산자우선순위 이용
◦
과정만 설명
◦
ABC := E*3.14 + ABC / E;
•
과정

5. 최적화

•
기억장소 사용의 최적화