본문 바로가기
공부/compiler

1. 컴파일러에 대해서

by 사당동호랭이 2011. 6. 11.
 컴파일러란?
 어떤 언어(source language)로 쓰여진 프로그램을 입력으로 받아들여서 대등한 다른 언어(target language)의 프로그램으로 바꿔 주는 프로그램

 분석 단계를 수행하는 도구들
 - 구조편집기 : 문서작성과 편집 기능, 프로그램 문서 분석하여 적당한 형태의 계층적 구조 출력.  
 - Pretty 프린터 : 프로그램의 구조가 명확하게 보이도록 출력
 - 정적 검사기(Static checkers) : 프로그램을 읽어서 분석한 다음 프로그램을 실행하지않고 내재된 결함을 발견해줌.
 - 인터프리터(Interpreter) : 소스프로그램을 한번에 기계어로 변환시키는 컴파일러와 달리 프로그램을 한 단계씩 기계어로 해석하여 실행하는 '언어처리 프로그램' 

 ★ Lexical analyzer(형태소 분석)
 - 토큰별로 쪼갬.

 ★ Syntax analyzer(구문 분석)
 - 파싱..토큰을 문법적인 표현으로  바꿈

 ★ Semantic analyzer(의미 분석) 
 - 의미 오류를 검사하고 다음에 이어질 코드 생성 단계를 위해 타입 정보를 모아서 정리.

 ★ Intermediate code generator(중간코드 생성)
 - 명시적인 중간 단계를 생성. 생성하기 쉽고 목적 프로그램으로 변환하기 쉬워야한다.

 ★ Code Optimizer(코드 최적화)
 - 중간코드를 향상시켜서 더 빠른 실행 코드를 생성시키게 해 줌.

 ★ Code generator(코드 생성)
 - 목적 코드를 생성.
 

 ★ 심벌테이블 
  - 각 식별자에 해당하는 레코드를 포함하는 데이터 구조