Search
🏫

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

[컴파일러 구성] 7. 구문분석 (4) SLR 구문분석
CS
Compiler
2023/11/2715:05
[컴파일러 구성] 7. 구문분석 (4) SLR 구문분석
CS
Compiler
2023/11/2715: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. 최적화

기억장소 사용의 최적화