컴파일러 : 주어진 언어로 작성된 컴퓨터 프로그램을 다른 언어의 동등한 프로그램으로 변환하는 프로세스
컴파일러와 인터프리터의 차이는
컴파일러는 실행 전에 모든 코드를 번역하여 실행파일을 따로 만든다. 번역 속도는 느리지만, 결과적으로 실행 속도는 빠르다.
인터프리터는 한 줄씩 번역한다. 번역 속도는 빠르지만, 결과적으로 실행 속도는 느리다.
어셈블러는 기계어로 코딩을 하는 것인데, 사람이 매번 이럴 수는 없으므로 소스코드로 작성한다.
그리고 이것을 컴파일러가 변환해준다.
컴파일러는 크게 어휘 분석과 구문 및 의미 분석, 코드 생성 단계로 나뉜다.
컴파일러에 따라서는 선택적으로 구문 및 의미 분석과 코드 생성 단계 사이에 중간 코드를 생성하거나 코드를 최적화하기도 한다.
어휘 분석기(Lexical analyzer) : 원시 프로그램을 읽어들여, 토큰이라는 의미있는 문법 단위로 분리하는 것
구문 분석기(Syntax analyzer) : 문법을 적용하여 분석을 수행하는 것
의미 분석기(Semantic analyzer) : 구문 분석의 결과로 생성된 구문 트리를 사용하여, 실행 가능한 중간 코드를 생성하는 것
코드 생성기(Code generator) : 재배치 가능한 기계코드 혹은 어셈블리어 코드로 생성하는 것
'CS > 컴파일러' 카테고리의 다른 글
2. Formal Language (0) | 2022.12.24 |
---|