728x90
컴파일러구성 - [제1장]컴파일러 개요
컴파일러 주요 용어
- 원시프로그램 : 번역기에 입력되는 프로그램
- 목적프로그램 : 번역기에서 출력되는 프로그램
- 어셈블러 : 어셈블리어로 작성된 프로그램을 그에 대응하는 기계어로 번역하여 주는 번역기
- 컴파일러 : 고급언어(basic, JAVA, C, C++ 등)로 작성된 프로그램을 저급언어로(어셈블리어나 기계어)로 번역해주는 번역기
- 프리프로세서 : 프로그래밍 언어에 유용한 기능들을 추가하여 언어를 확장시켜 주는 역할을 하는 것으로서, 원시언어와 목적언어가 모두 고급언어인 번역기
- 인터프리터 : 고급언어를 입력으로 받아들여서 번역과 동시에 실행을 한 후, 그 결과를 출력하기 때문에 APL SNOBOL 등과 같은 대화용 언어를 구현할 경우 사용
- 디버깅 : 프로그래밍의 오류를 발견하고 그 원인을 수정하는 작업
- 이식성 : 원시 프로그램을 다른 기종으로 옮기는 건이 얼마나 용이한가를 나타내는 정도
- 번역기 : 하나의 프로그래밍 언어로 작성된 프로그램을 입력으로 하여 그와 동등한 의미를 갖는 다른 프로그래밍 언어로 된 프로그램을 출력하는 하나의 프로그램
- 토큰 : 컴파일러나 어셈블러 등의 처리기에서 아용되는 어휘분석의 최소 단위이다. 즉 예약어, 상수, 연산자, 식별자, 구분자 등이다.
- 어휘분석기 : 원시 프로그램을 읽어 들여 토큰(token)이라는 의미있는 문법적 단위로 분리하여 출력하는 프로그랭
- 구문분석기 : 어휘분석 단계의 결과인 토큰를을 받아, 이 토큰들이 주어진 문법에 맞는지 검사하는 프로그램
- 파스트리 : 토큰을 단말 노드로 하여 트리 형태로 표현한 것
- 구문트리 : 파스트리에서 불필요한 정보들을 제거하고, 꼭 필요한 정보들만으로 구성된 트리
- 의미분석 : 구문트리에 대하여 어떻한 의미와 기능을 하는 것인지를 분석하고, 이러한 기능이 올바르게 수행될 수 있도록 환경을 구성한다.
- 코드최적화 : 코드를 좀더 효율적으로 만들어 코드 실행시 기억공간이나 실행시간을 절약한다.
- 지역최적화 : 부분적인 관점에서 일련의 비효율적인 코드를 구분해 내고, 좀더 효율적인 코드로 수정한다.
- 전역최적화 : 지역최적화와는 달리 부분적인 관점이 아니라, 전체적인 관점에서 좀더 효율적인 코드로 수정하는 방법
- 패스 : 컴파일러를 구현할 때 여러 논리적 단계들을 모아서 하나의 물리적 모듈로 묶는것
요점정리
연습문제
- 다음 중 저급언어를 저급언어로 번역하는 기능을 갖고 있는 번역기는?
- 정답 :
- ①
- 어셈블리어는 저급언어를 저급언어인 기계어로 번역한다.
- 다음 중 컴파일러 기법에 대한 설명 중 옳지 않은 것은?
- 정답 :
- ①
- 인터프리터 기법은 사용자에게 많은 융통성을 준다.
- 다음 중 프로그래밍 언어에 유용한 기능들을 추가하여 언어를 확장하는 경우 주로 사용되는 것은?
- 정답 :
- ③
- 프리프로세서에 대한 설명이다.
- 혼합형 연산을 하는 경우 정수를 실수로 바꾸어 주어야 한다. 다음 중 어느 단계와 관계 있는가?
- 정답 :
- ③
- 의미분석 단계에서 혼합형연산의 형을 동일한 형으로 변환해 준다.
- 다음은 컴파일러의 물리적 구조에 대한 설명이다. 틀린 것은?
- 정답 :
- ①
- 컴파일러의 논리적 구조를 구현한 것이 패스이다. 따라서 논리적 구조와 순서가 같을 필요는 없다.
- 컴파일러의 논리적 구조가 올바르게 나열된 것은?
- 정답 :
- ①
- 어휘분석-구문분석-의미분석-중간코드 생성-코드최적화-코드생성
'컴퓨터과학[3-2] > 컴파일러' 카테고리의 다른 글
컴파일러구성 - [제6장] Context-free 문법의 효율화 (0) | 2016.07.12 |
---|---|
컴파일러구성 - [제5장] 어휘분석기와 LEX (0) | 2016.07.12 |
컴파일러구성 - [제4장]정규문법,정규표현과 결정적 유한오토마타[DFA] 의 동치관계 (0) | 2016.07.10 |
컴파일러구성 - [제3장]정규언어와 유한오토마타 (0) | 2016.07.10 |
컴파일러구성 - [제2장]형식언어와 형식문법 (0) | 2016.07.10 |
댓글