진호박's Life Style

프로그래밍언어론 제3장 프로그래밍 언어의 구현 요점정리

study/독학사
본문을 읽기전에 가벼운 클릭! 부탁드려요!
2013/04/24 21:29

제3장 프로그래밍 언어의 구현


1 자연어와 프로그래밍 언어
-일반적인 언어

·보통 우리 인간이 일상적으로 사용하는 자연 발생적인 언어 체계

·자연어 또는 자연 언어라 부름

-인공지능 언어

·프로그래밍 언어

·사람과 컴프터 사이의 통신 수단으로서 인간이 어떠한 문제를 해결하기 위해 컴퓨터에 전달하는 대화의 수단이 되는 언어


2 프로그래밍 언어 구문과 시맨틱스

-프로그램 언어가 갖추어야할 기본 요건

·프로그램이 읽기 쉬워야 한다:프로그램이 블록구조를 갖던가 문서화를 통해서 작성자가 아닌 제삼자에게도 쉽게 프로그램을 읽을 수 있도록 구문이 이러한 구조를 정의해야 한다.

㐀프로그램을 단순하고 쉽데 작성할 수 있어야 한다.

·구분이 정확하게 한가지 의미만을 갖도록 정의해야 한다.

·컴파일러의 구성이 용이한 구문의 형태를 가져야 한다.

-구문의 표시방법

·형식 정의(Formal definition):명확하게 정의된 표현법을 사용하여 형식화된 문법으로서 어떤 언어의 올바른 문장을 형성하기 위한 생성규칙이다.

·언어설계시 구문의 형식 정의를 기본으로 하면 언어의 표현 가능성 여부를 정확하게 이해할 수 있다.

-문맥의 자유 문법

·언어를 구성하는 가장 기본적인 단위를 토큰 또는 단말 노드라 한다.

·언어의 구성은 비단말 이라는 변수들에 의해 기술된다.

·문장의 구성 성분은 생성규칙이라는 규칙에 의해 확인되는데 생성은 비단말로 구성된 왼편에 0개나 그 이상의 단말이나 비단말로 구성된 오른편을 가지고 있다.

·생성 규칙의 왼편과 오른편 사이는 :=로 연결된다.

·문맥 자유 문법은 4개의 부분으로 구성된다.

*단말의 집합

*비단말의 집합

*생성규칙의 집합

*비단말은 시작 비단말로 선택된다.

-BNF(Backus-Naur Form)

·생성 규칙은 집합으로, 머저 정의된 언어로 작성된 프로그램은 이러한 생성규칙들로 생성된다.

·생성규칙은 하나의 정의를 이루는데 촘스키의 형식정의에 근거하여 왼쪽에 정의될 대상이 표현되며 그 오른쪽에는 그 대상에 대한 정의가 나타난다.

-확장된BNF(Backus-Naur Form)

·반복되는 부분이나 선택적인 부분 등에 대한 특수한 의미를 갖는 메타 기호를BNF에서 보다 많이 사용한다.

-구문도표

·구문 도표 구문 그래프, 구문식은 구문을 나타내기 위한 또다른 방법

·사각형:다시 정의될 대상

·원, 타원:단말기호

·지시선:사각형과 원또는 타원 간을 연결한다.

-의미: 구문이 하는 일은 어떤 규칙을 정의하고 있음을 보여주지만 완전한 구조를 설명하는 데는 규칙만을 가지고는 불가능 하므로 의미를 이용한다.


3 컴파일러

-컴파일:인간 중심의 고급 언어로 작성된 프로그램을 컴퓨터가 이해할 수 있는 기계어로 번역하는 과정이 필요한데 이런 과정을 컴파일 이라 한다.

-고급 언어로 작성된 원시 프로그램은 번역과정을 거쳐서 기계가 이해할 수 있는 목적 프로그램으로 번역된다.

-컴파일러 번역과정 및 실행

〔컴파일러 번역과정 및 실행 〕

-링커(Linker)

·목적 프로그램을 컴퓨터가 이해할 수 있는 기계어로 된 프로그램으로 실제 컴퓨터에서 실행되려면 한 개 이상의 목적 프로그램과 각 프로그램 작성 중 사용된 라이브러리 프로그램을 묶어서 하나의 기계어로 번역해 주는 역할을 수행한다.

-크로스 컴파일러

·원시 프로그램을 컴파일러가 수행되고 있는 기계에대한 기계어로 번역하는 것이 아니라 다른 기종애 대한 기계어로 번역하는 컴파일러

-컴파일러의 장점

·기계어로 번역된 것을 하드웨어 인터프리터가 번역하여 실행하기 때문에 매우 빠르게 프로그램을 실행시킬 수 있다.

·반복문이나 계속되는 호출을 요구하는 부프로그램 등과 같이 많은 반복 횟수를 반복처리하는 프로그램의 경우에도 큰 장점을 가지고 있다.

-컴파일러의 단점

·번역 과정에서 큰 기억 장치를 요구한다.

-컴파일러의 번역과정

〔컴파일러의 번역과정〕

-Lexical분석

·컴파일 할 때 원시 프로그램의 분자를 입력하여 조사하고 다음의 처리 루틴으로 넘기기위해 문자열을 분해하여 해석하는 루틴이다.

·선형적 분석을 하는 과정

-구문 해석 단계

·파싱 단계

·산술식의 변수나 상수는 테이블에 등록하여 테이블의 번호를 바꾼다.

·식을 트리 구조나 폴리시 기법으로 변환하는 과정

-시맨스틱 단계

·의미분석 단계

·파싱 단계에서 트리상의 노드에서 노드로 이동시 필요한 해석이나 분석을 하는 번역의 중심단계

·실제 실행가능한 형태의 중간 코드를 만든다.

-코드 최적화 과정

·컴파일러 수행중 비효율적인 중간 코드가 생성될 수 있으며 이러한 비효율적인 중간 코드로부터 만들어지는 목적 코드 프로그램은 수행 시간과 기억공간을 낭비한다.

·낭비되는 자원을 최소화하기 위해 중간 코드나 목적 코드에 적용되는 과정을 말한다.


4 인터프리터

-프로그램이 복잡하지 않고 짧으며 질문에 응답하는 대화식 프로그램에 많이 이용된다.

-실행할 때마다 번역과정을 거치게 된다.

-인터프리터에 있어서 대개 하나의 의사 코드는 기계 코드에 의한 하나의 서브루틴에 대응된다.즉, 인터프리터는 원시 프로그램을 따로 번역하지 않고 바로 처리될 수 있어야 한다.

-원시 언어를 기계어로 쉽게 즉시 번역할 수 있으며 특별한 기억 장소를 요구하지 않으나 실행시 번역하는 시간을 매우 많이 요구하는 경우에 발생한다.

〔컴파일어와 인터프라의 비교〕

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License

http://jinhobak.tistory.com/trackback/239 관련글 쓰기

Comment 0

티스토리 툴바