Microsoft PowerPoint - PL_03-04.pptx



Similar documents
1

4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp

진단, 표시・광고법 시행 1년

untitled


??

DBPIA-NURIMEDIA

형식 언어

1

10김묘선

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

단위: 환경정책 형산강살리기 수중정화활동 지원 10,000,000원*90%<절감> 형산강살리기 환경정화 및 감시활동 5,000,000원*90%<절감> 9,000 4, 민간행사보조 9,000 10,000 1,000 자연보호기념식 및 백일장(사생,서예)대회 10

0429bodo.hwp

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록

cls46-06(심우영).hwp

최우석.hwp

교사용지도서_쓰기.hwp

E1-정답및풀이(1~24)ok

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770>

< BDC3BAB8C1A4B1D4C6C75BC8A3BFDC D2E687770>


<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770>

untitled

민주장정-노동운동(분권).indd

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음

6±Ç¸ñÂ÷

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A C3D6C1BEBABB292E687770>

초등국어에서 관용표현 지도 방안 연구

177

제주어 교육자료(중등)-작업.hwp

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾

01Report_210-4.hwp

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E D352D32315FC5E4292E687770>



교육 과 학기 술부 고 시 제 호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책

시험지 출제 양식

우리나라의 전통문화에는 무엇이 있는지 알아봅시다. 우리나라의 전통문화를 체험합시다. 우리나라의 전통문화를 소중히 여기는 마음을 가집시다. 5. 우리 옷 한복의 특징 자료 3 참고 남자와 여자가 입는 한복의 종류 가 달랐다는 것을 알려 준다. 85쪽 문제 8, 9 자료

상품 전단지

::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무 시 민 참 여 고 려 사 항 이 해 당 사 자 : 유 ( ) 무 전 문 가 : 유 ( ) 무 옴 브 즈 만 : 유 ( ) 무 법 령 규 정 : 교통 환경 재

2

DBPIA-NURIMEDIA

화이련(華以戀) hwp

ÆòÈ�´©¸® 94È£ ³»Áö_ÃÖÁ¾

歯1##01.PDF

<5BC1F8C7E0C1DF2D31B1C75D2DBCF6C1A4BABB2E687770>

120229(00)(1~3).indd

2힉년미술

제4장 기본 의미구조 (Basic Semantics)

thesis


untitled

2015 경제ㆍ재정수첩



PowerPoint 프레젠테이션

untitled

<303020B8D3B8AEB8BB5FC2F7B7CA B3E2292E687770>

해양모델링 2장5~ :26 AM 페이지6 6 오픈소스 소프트웨어를 이용한 해양 모델링 물리적 해석 식 (2.1)의 좌변은 어떤 물질의 단위 시간당 변화율을 나타내며, 우변은 그 양을 나타낸 다. k 5 0이면 C는 처음 값 그대로 농

3차시.ppt

......

PowerPoint Presentation

OA_Handbook.hwp

I 문학과 우리 사회 눈 은 다가오는 계절인 봄의 생명력과 연결되어 작품 전체의 분위 기를 주도하고 있다. 1. 문학과 인접 분야 바탕 학습 확인 문제 본문 009쪽 01 4 문학은 음악, 미술 등과 같이 예술의 한 갈래로, 다른 예술 갈래와 달리 언

중간코드생성

SIGPLwinterschool2012

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

소프트웨어공학

레이아웃 1

untitled

강의10

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

<C6EDC1FD20B0F8C1F7C0AFB0FCB4DCC3BC20BBE7B1D420B0B3BCB120BFF6C5A9BCF32E687770>

< B5BFBEC6BDC3BEC6BBE E687770>

歯표지.PDF

final_thesis

<3130BAB9BDC428BCF6C1A4292E687770>

11민락초신문4호

9

제1절 조선시대 이전의 교육

사진 24 _ 종루지 전경(서북에서) 사진 25 _ 종루지 남측기단(동에서) 사진 26 _ 종루지 북측기단(서에서) 사진 27 _ 종루지 1차 건물지 초석 적심석 사진 28 _ 종루지 중심 방형적심 유 사진 29 _ 종루지 동측 계단석 <경루지> 위 치 탑지의 남북중심

새만금세미나-1101-이양재.hwp

652

歯 조선일보.PDF

<33B1C7C3D6C1BEBABB28BCF6C1A42D E687770>

< C1A633B1C75FC3D6C1BE5FBCF6C1A4BABB2E687770>

<C1DFB1DE2842C7FC292E687770>

01_피부과Part-01

Semantic Consistency in Information Exchange

96부산연주문화\(김창욱\)

???? 1

3월-기획특집1-4

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대

<C7CFB4C3B0F8BFF828C0FCC7CFC1F6B8F8C7D1C6EDC1F6292D31302E3128C3D6C1BE292D31302E31342E687770>

<BFACBAB832342D3033C5F0C1F7BFACB1DDC8B0BCBAC8ADB8A6C0A7C7D1BCBCC1A6C3BCB0E8BFACB1B82E687770>

종사연구자료-이야기방 hwp

MAX+plus II Getting Started - 무작정따라하기

정 답 과 해 설 1 (1) 존중하고 배려하는 언어생활 주요 지문 한 번 더 본문 10~12쪽 [예시 답] 상대에게 상처를 주고 한 사 람의 삶을 파괴할 수도 있으며, 사회 전체의 분위기를 해쳐 여러 가지 사회 문제를 발생시킬 수 있다. 04 5

<4D F736F F F696E74202D20C7C1B7CEB1D7B7A1B9D6BEF0BEEEB7D05FC3E2BCAEBCF6BEF7>

Transcription:

Copyright, 2011 H. Y. Kwak, Jeju National University. Kwak, Ho-Young http://cybertec.cheju.ac.kr Contents 1 프로그래밍 언어 소개 2 언어의 변천 3 프로그래밍 언어 설계 4 프로그래밍 언어의 구문과 구현 기법 5 6 7 컴파일러 개요 변수, 바인딩, 식 및 제어문 자료형 8 영역과 수명 9 기억장소 배당 10 부프로그램 11 추상 자료형 12 예외 처리 / 병렬 프로그래밍과 병렬 처리 1

Chapter 3. 프로그래밍 언어 설계 주요 언어 성공 요인 (언어 자체보다는 외적 요인에 의함) Fortran 컴퓨터 제조회사 후원 Cobol 미 국방성 지원 Lisp 인공지능 분야에서 사용 Pascal 교육용, 마이크로컴퓨터 표준언어 역할 PL/I IBM의 적극 후원 C UNIX 운영체제의 성공 Ada 미국방성 지원 주요 언어의 설계 목적 Fortran 실행의 효율성 Cobol 영어와 유사한 문법 구조로 program의 easy readability Algol60 블록 구조 제공으로 알고리즘 작성 용이 Pascal 간단한 명령형 언어, 하향식 설계 증진 2 Chapter 3. 프로그래밍 언어 설계 P.L 역사와 설계 기준 1950년대 초기 설계기준 : Efficiency of execution Fortran Cobol과 Algol 60의 등장으로 효율성보다 일반적인 원칙 중시 1960년대 Algoll 60 : 블록구조, 재귀적 용법으로 논리적으로 간결 명료한 알고리즘 표현 용이 Cobol : 프로그램 판독성 증가 (영어 유사 문법 구조) 복잡성 제어(complexity control) 필요성 인식 - 추상화 기법, 언어 규칙과 제한의 감소 필요성 Simula67: 강력한 추상화 기법 제공 Algol68: 일반성, 직교성(othogonality) 제공으로 언어의 복잡성 감소 1970년대 - 1980년대 초 간결성(simplicity)과 추상화(abstraction)를 강조 예) Pascal, C, Euclid, Modula-2, Ada 언어 구성에 수학적 정의 도입 프로그램의 정확성 증명 기법을 갖춘 언어 제공 프로그램 신뢰성 증진 3

Chapter 3. 프로그래밍 언어 설계 P.L 역사와 설계 기준 1980년대 언어에 논리 또는 수학 개념의 삽입 증진 논리를 프로그래밍 언어 자체에 포함 함수형 언어에 관심 ML, Miranda, Scheme 객체 지향 언어에 관심 증가 C++ 4 Chapter 3. 프로그래밍 언어 설계 프로그래밍 언어 설계 원칙 언어 설계의 기본 원칙 효율성 (efficiency) 일반성 (generality) 직교성 (orthogonality) 획일성 (uniformity) 기타 설계 원칙 간결성 (simplicity) 안전성 (security) 표현력 (expressiveness) 기존 표기나 규칙과의 일관성 정확성 (preciseness) 확장성 (extensibility) 기계 독립성 (machine independence) 제약성 (restrictability), 부분성 (subset) 5

Chapter 3. 프로그래밍 언어 설계 효율성(efficiency) 효율성의 기준에 따른 분류 목적 코드의 효율성 번역기의 효율적 실행 코드 생성 최적화 (code optimization) 예) Pascal에서 상수는 수식으로 표현되지 않음. 상수 식별자는 번역과정 시 배정된 값으로 대체 번역의 효율성 적절한 크기의 번역기로 빠르게 번역할 수 있는 것 예) 언어 번역의 단계 구성 문제 (Pascal : 1-pass, Modula-2 : 2-pass) 구현의 효율성 번역기의 효율적 작성 가능 여부 예) 번역기 구현의 어려움, 번역 수행 알고리즘의 충분치 못한 이해로 실패한 언어 (Algol 60) 프로그래밍 효율성 프로그램 작성의 단순성, 용이성 문제 언어의 표현성, 추상화 메커니즘과 관련 이상적인 언어 - Lisp, Prolog 실제 효율성은 신뢰도(reliability)와 관계됨 생성된 Software의 효율성 : readability와 maintainability에 좌우 6 Chapter 3. 프로그래밍 언어 설계 일반성, 직교성, 획일성 일반성(Generality) 특별한 경우를 피하거나 밀접한 관련의 여러 개념들을 하나의 개념으로 결합 일반성이 부족한 경우의 예 프로시저 Pascal : 프로시저 선언과 매개 변수 허용, 프로시저형 변수 不 許 Modula-2 : 일반성 보유 Ada : 매개 변수에 프로시저 사용 못함 배열 Pascal : 가변 배열 不 許 C, Ada : 가변 배열 許 容 Modula-2, Fortran : 가변 배열 전달능력, 가변배열 선언 不 許 동등 연산자, 배정 연산자(=, :=) 대부분 언어 : 배열, 레코드에 적용 不 許 Ada : 배열 레코드에 적용 許 容 Ada : 배열, 레코드에 적용 許 容 매개변수 Fortran : call by reference 만 許 容 Algol l 68, C, Java : call by value, 객체에 대한 포인터를 값으로 전달 가능 일반성 제공 Ada : 일반성 제공 7

Chapter 3. 프로그래밍 언어 설계 일반성, 직교성, 획일성 일반성이 갖는 문제점 언어의 간결성 저하 언어의 판독성 저하 언어의 신뢰성 저하 예) C 언어의 포인터 (일반성 제공) - 문제점 제기 Java는 포인터 불허 : 신뢰성과 판독성 문제 해결 Pascal에서는 이명(aliasing)과 위험을 줄이기 위해 포인터가 본질적으로 제한 직교성(Orthogonality) 수학 개념에서 유래 직각 또는 완전히 독립적인 방향 언어의 구성자들이 각각의 의미를 가진 채 결합하는 성질 (구성자간의 상호작용 또는 문맥의 사용이 예상 밖의 행위를 야기하지 않아야 함) 비직교성(non-orthogonality) 문맥에 의존하는 제한 비일반성(non-generality) 문맥과 관계없는 제한 8 Chapter 3. 프로그래밍 언어 설계 일반성, 직교성, 획일성 직교성(Orthogonality) -계속 직교성이 부족한 경우의 예 함수 반환 값 자료형 Pascal : 스칼라형, 포인터형만 허용 C : 배열형만 제외 Ada : 완벽한 직교성 제공 (모든 자료형 허용) 파일 Pascal : 화일형은 특별한 상태 취급 (화일을 프로시저 매개 변수로 전달 금지, 화일 변수는 배정 금지) 대부분 언어 : 화일을 라이브러리로 취급 (비직교성 탈피) 문자열 Modula-2 : 문자열 배정 (작은 문자열 더 큰 문자열), 크기가 다른 객체에 대한 유일한 배정 매개변수 전달기법 C : 배열 - call by reference, 이외 모든 자료형 - call by value 방식 Ada : 모든 자료형 - call by value, result, value-result 허용(직교성 보장) Algol 68의 중요 설계 목표 - 직교성 보장 9

Chapter 3. 프로그래밍 언어 설계 일반성, 직교성, 획일성 획일성(Uniformity) 언어 구조들의 외모와 행동에서의 조화에 중점을 둠 유사한 것들은 유사하게 보이고 유사한 의미를 갖게 하며, 상이한 것들은 서로 다르게 보이고 서로 다르게 행동하여야 된다는 성질 획일성이 부족한 비조화의 예 if문, while 문 : begin-end 구조 요구, repeat 문: begin-end 구조비요구 가변 레코드에서 case 문, case 제어문 : 구문 상이 (Modula-2에서 해결) 함수 값의 반환 방법 - 배정문과 유사 (타 언어 return문 문 사용으로 해결) 1 function f : boolean ; procedure p ; (* terminator *) 2 begin var x : integer ; (* separator *) 3... y : real ; (* terminator t *) 4 f := true ; begin 5 end; x := 0 ; (* separator *) y := 1.0 end; (* terminator *) Pascal : 포인터 선언( integer)과 포인터 값(x )에 공용 (Modula-2는 POINTER TO로 해결) ; : Modula-2, Pascal에서 문장 구분자와 선언 종결자로 사용 (C : 종결자로만 사용) 비획일성은 특별한 문맥에서만 발생되고 구성자들 간의 상호작용으로 볼 수 있으므로 비직교성으로 간주될 수도 있다. 10 Chapter 3. 프로그래밍 언어 설계 프로그래밍 언어의 기타 설계 원칙 간결성(Simplicity) Pascal의 주된 설계 원칙은 간결성 직교성, 일반성, 획일성 : 간결성 보장 못함 예) Algol 68 구성자의 수가 적다고 언어가 간결한 것은 아님 예) Lisp, Prolog : 적은 수의 구성자를 가지나 복잡한 실행시간과 시스템에 의존적 과다한 단순성 - 언어 사용에 방해, 표현력이 부족, 많은 제한 발생 표현력(Expressiveness) 복잡한 과정이나 구조를 표현하는데 용이함을 의미 표현력은 강하나 단순하지 않은 언어 - Lisp, Prolog, Algol 68 표현력이 강하면서 단순한 언어 - C 언어 예) while ( * s++ == * t++) ; 정확성(Preciseness) 명확성(Definiteness) 언어에 대한 정확한 정의 언어의 행위가 예측 가능한 정의의 존재 여부 정확한 언어 정의 언어의 신뢰도, 번역기의 신뢰도에 영향 11

Chapter 3. 프로그래밍 언어 설계 프로그래밍 언어의 기타 설계 원칙 기계 독립성 (machine independence) 기계 독립적인 언어 정의를 통하여 보장 (호환성 제공) 기억 장소 할당과 기계 구조와 별개로 정의된 자료형 사용 안전성 (security) 프로그래밍 오류를 줄이고, 오류 발견 용이한 언어 목표 언어의 신뢰성과 정확성에 밀접한 관계 언어 설계 시 자료형, 형 검사, 변수 선언을 도입 기존 표기나 규칙과의 일관성 언어 설계 시 표준화된 특성과 개념을 갖도록 해야 함 Algol 68 - 표준화된 표기를 잘 따르지 않은 언어 언어 예) type 대신 mode 사용 12 Chapter 3. 프로그래밍 언어 설계 프로그래밍 언어의 기타 설계 원칙 확장성 (extensibility) 사용자가 언어의 특성을 쉽게 부가하도록 허용하는 기법 확장성을 가진 언어의 예 - Lisp 명령형 언어는 함수형 언어보다 언어 확장이 어려움 추상화 개념(자료 추상화, 제어 추상화)은 확장성 지원 제약성 (restrictability), 부분성 (subset) 일부의 언어 지식과 언어 구조만 가지고도 효과적인 프로그램 작성 가능 언어 제한성의 장점 프로그래머는 언어의 효과적인 사용을 위해 언어 전체를 배울 필요 없음 번역기 작성자가 언어 일부분 만을 선택하여 구현, 사용 가능 (부분언어 지원) 예) SP/1, SP/2,, SP/k : PL/I의 부분 언어들 13

Chapter 3. 프로그래밍 언어 설계 문제점과 해결책들 성공적인 언어 설계를 위한 충고 신뢰성 프로그램의 신뢰성 위해 진단 컴파일러 또는 점검 컴파일러 사용 Cornell : PL/I diagnostic, C 언어 환경(debugger 포함) 효율적인 번역 초기 고급 언어 (Fortran, Cobol...) : 분리 컴파일 제공 효율적 번역 가능, 오류 유발 Algol 68, Pascal(70년대 초반) : 신뢰성 강조 통합 컴파일러 Ada : 조화 (분리 컴파일의 장점+통합 컴파일의 장점), specification part, body part로 해결 코드 최적화 (optimization) 신뢰성 효율적인 목적 코드 / 컴파일링 비용 증가 반복 수행부 등 일부분만 최적화 효과 큼 실제 컴파일러 : 여러 최적화 단계 제공 언어 구문의 과다한 간결성과 생략은 프로그램 판독성을 저하 적절한 수준의 간결성은 프로그래머에게 좋은 훈련과 프로그램의 신뢰성을 증가 짧은 프로그램 신뢰성 증진 (APL, 4세대 언어) 14 Chapter 3. 프로그래밍 언어 설계 문제점과 해결책들 C. A. R Hoare 의 성공적인 프로그래밍 언어 설계를 위한 충고 언어 설계 : (1) 언어의 특정한 특성(feature) 고안 (2) 새로운 언어 설계 (기존 특성들을 선택 조합) (1) 언어의 특정한 특성 고안 새 특성의 설계자는 한번에 한가지 특성에만 집중 잘 알려진 언어에 특성 구현 이미 존재하는 언어의 장점을 해치지 않고, 단점과 불완전성 해결, 완화하는 것을 확신 이 특성들이 어떻게 단순하고, 효율적으로 구현되는지 보여야 함 사용자 지침서 작성 많은 예제 프로그램들 작성 (다른 방법들과 비교 평가) (2) 새로운 언어 설계 기존의 많은 특성들 : 숙지, 선택, 판단력 구비 특성들 사이의 불일치 제거, 중첩부분 조정 능력 요구 새 언어의 영역, 목적, 범위, 복잡성, 확장성에 대한 명확한 개념 실제 구현과 사용자 지침서(초보자용, 고급용) 제공 새 언어 설계 작업은 단지 기존의 개념을 통합하는 것이다. 15

Contents 1 프로그래밍 언어 소개 2 언어의 변천 3 프로그래밍 언어 설계 4 프로그래밍 언어의 구문과 구현 기법 5 6 7 컴파일러 개요 변수, 바인딩, 식 및 제어문 자료형 8 영역과 수명 9 기억장소 배당 10 부프로그램 11 추상 자료형 12 예외 처리 / 병렬 프로그래밍과 병렬 처리 16 Computer System Computer System 프로그램을 저장하고 실행할 수 있는 알고리즘과 자료 구조들의 전역 집합 Actual Computer Hardware Computer Software Simulated Computer 다른 프로그램으로 주어진 Computer를 Simulation Virtual Computer 고급 언어 프로그래머는 컴퓨터를 가상의 고급 언어 컴퓨터로 간주 가상의 Assembly 언어 컴퓨터 가상의 Ada 컴퓨터 가상의 Lisp 컴퓨터 어셈블러 Ada 번역기 운영체제 명령어 번역기 운영 체제 hardware Lisp 인터프리터 Power Builder 인터프리터 가상의 PowerBuilder 컴퓨터 C++ 번역기... Cobol 번역기 가상의 C++ 컴퓨터 가상의 Cobol 컴퓨터 17

언어 구문 - 프로그래밍 언어의 기본 문자 집합 Alphabet 문자 (A-Z) 26개 + 아라비아 숫자 (0-9) 10개 예) Fortran : 기본 문자 집합 + 13개의 특수문자 (= + - * / ( ),. $ : 공백) Algol60 : 알파벳 대소문자 52개 +Digit 10개 + 28개의 특수문자 relational < = > > boolean arithmetic + - special, 10 : ; ' special b ( ) [ ] 문자 코드 체계 EBCDIC(Extended Binary Coded Decimal Interchange Code) IBM에서 제안, 8비트 조합 코드 ASCII(American Standard Code for Information Interchange) ANSI에서 제안, 7비트 조합 코드(128개의 문자 표현) 영문자 대소문자 52개 + 숫자 10개 + 33개 특수문자 +33개의 제어문자 UNICODE 16 bit ISO표준 규격 Java에 시행 18 언어 구문 - 프로그래밍 언어의 기본 문자 집합 정합 순서(collating sequence) 문자 또는 문자열에 대한 일반적인 순서언어 예) 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9, A < B < C <... < X < Y < Z 언어 구현 시에 결정, 일반적으로 문자의 bit 조합 표현 순서에 영향 (코드 체계 따름) 어휘 구조 용어 프로그래머 정의 가능 (RPG, Snobol) 어휘 토큰 (lexical token), 어휘 요소 (lexical element), 어휘 단위 (lexical unit) 언어 구성자 기본 의미 단위를 표현하는 한 개 이상의 프로그래밍 언어의 알파벳 문자로 구성된 문자열 한 개 이상의 어휘 토큰으로 형성되며, 구문적으로 허용된 프로그램의 일부 식별자(identifier), 미리 정의 된 식별자, 예약어(reserved-word) 언어 어휘를 구성하는 단어나 기호 형태의 문자 알파벳, 변수 이름으로 사용할 수 없음 장점 : 프로그램 판독성 증가, 컴파일러가 기호 테이블을 빠른 시간에 탐색 많은 예약어 언어 확장시 新 예약어와 이전에 사용된 프로그램의 식별자와 중복 우려 구분자, 분리자(separator) 19

Context-Free Grammar와 BNF 표기법 BNF(Backus-Naur(Normal) Naur(Normal) Form) 표기법 구문(syntax) 형식을 정의하는 가장 보편적인 표기법 한 언어의 구문에 대한 BNF 정의 언어의 문장을 생성하는 생성 규칙(production rule) 정의 생성 규칙 생성 규칙의 왼쪽(정의될 대상), 오른쪽에는 그 대상에 대한 정의를 표현 BNF 표기법에 의한 식별자(identifier) 정의 예 Meta symbols ::= 정의하다, < > nonterminal, alternative 20 Context-Free Grammar와 BNF 표기법 EBNF(Extended Backus-Naur Form) 표기법 BNF 표기법을 확장하여 보다 읽기 쉽고, 간단하게 표현된 표기법 BNF보다 추가된 특수한 의미를 갖는 EBNF의 메타 기호 반복 :{ }, { } 7 0 0번 이상 반복 선택 : [ ] 0 또는 1번 선택 { }, [ ],, ( ), ::=와 같은 메타 기호를 언어의 terminal로 사용하는 경우, ::= 와 같이 인용부호로 묶어 표현 sub-pascal 시작부에 대한 EBNF 표기 ; ; ; ; ; ; ; ; 21

구문 도표(Syntax diagram) 구문 도표 구문 도표는 그 형태가 순서도와 유사 구문 도표는 EBNF 와 일대일 대응 다시 정의될 대상은 box로, terminal 기호는 원이나 타원형으로 표시 이들 사이는 지시선(arc)으로 연결 예: terminal x x nonterminal B B 22 구문 도표(Syntax diagram) 구문 도표 그리는 방법 A:: ::= X 1 X 2... X n Xi가 nonterminal인경우 A X1 X2... X Xn Xi가 terminal인경우 A... x 1 x 2 x n A ::= α 1 α 2... α n α 1, α 2,, α n 이nonterminal일경우 α 1 A α 2... α n 23

구문 도표(Syntax diagram) 구문 도표 그리는 방법 (계속) EBNF A ::= { α } A EBNF A ::= [ α ] A A ::= (α 1 α 2 )β α α A α 1 α 2 β 24 구문 도표(Syntax diagram) A x ( B ) 예제 EBNF 구문도표 A ::= x ( B ) B ::= AC C ::= {+A} B C A A C + 조건 V N = { A, B, C } V T = { +, x, (, ) } A x ( A ) A +

구문 도표(Syntax diagram) Sub-pascal 시작부 구문도표 파스 트리(Parse Tree) Parse Tree 원시 프로그램의 문법 검사 과정에서 내부적으로 생성되는 트리 형태의 자료구조 문장 표현이 BNF에 의해 작성될 수 있는지 여부를 나타냄 예 : 식별자에 대한 BNF를 통해 다음 TEST1에 대한 파스 트리 작성 <identifier> <identifier> ::=<letter> <identifier><letter> <identifier><digit> <letter> ::=A B C... X Y Z <digit> ::= 0 1 2... 8 9 <identifier> <identifier> f <letter> <identifier> <letter> <identifier> <letter> <letter> <digit> T E S T 1 27

파스 트리(Parse Tree) 모호성, 결합성 및 우선 순위 서로 다른 유도 과정을 거쳐 B33을 생성한다. <identifier> <identifier> <digit> <identifier> 3 <identifier> <digit> 3 <identifier> 3 3 <letter> 3 3 B 3 3 <identifier> <identifier> <digit> <identifier> <digit> <digit> <letter> <digit> i <digit> i B <digit> i <digit> i B 3 <digit> B 3 3 <identifier> <identifier> ::=<letter> <identifier><letter> <identifier><digit> <letter> ::=A B C... X Y Z <digit> ::= 0 1 2... 8 9 <identifier> <identifier> <digit> <letter> <digit> B 3 3 28 파스 트리(Parse Tree) 모호성, 결합성 및 우선 순위 순위 폭포(precedence cascade) : 새로운 nonterminal symbol인 <term>과 문법 규칙을 추가하 여 문법의 우선 순위를 정함 <exp> ::= <exp> - <exp> <term> <term> ::= <term> * <term> (<exp>) <number> 7-3-2 parsing 시 동일한 표현이 좌-결합(left-associative) or 우-결합(right-associative)의 두 가지로 표현 - - - 2 7-7 3 3 2 29

파스 트리(Parse Tree) 모호성, 결합성 및 우선 순위 BNF 문법에 좌순환 규칙을 사용하면 좌-결합을 지원할 수 있음 <exp> ::= <exp> - <exp>를 <exp> ::= <exp> - <term>으로 대치하면 좌-결합으로 parsing됨 <exp> <exp> - <term> <exp> - <term> 2 7 3 [표 4.5] 표 4.4의 개정문법 <exp> ::= <exp> - <term> <term> <term> ::= <term> * <factor> <factor> <factor> ::= (<term>) <number> <number> ::= <number><digit> <digit> <digit> ::= 0 1 2 3 4 5 6 7 8 9 우순환 규칙 (<exp> > ::= <term> - <exp>)은 우-결합 parse tree를 parsing [표 4.5]는 [표 4.4]의 문법이 우선 순위와 좌-결합으로 인해 모호성을 갖지 않음 30 구문과 프로그램 신뢰성(reliability) 구문(Syntax) 언어의 신뢰성에 영향 FORTRAN PL/I DO 10 I = 2.6 2.6의 오류 (. 대신, 사용해야 함) A(I) = B + C(I) 10 CONTINUE DO10I에 2.6 배정으로 인식 A = B = C 다중배정문의 의미(A와 B에 C값 저장) (B equal to C)의 결과를 A에 저장하는 문장으로 인식 현수(dangling) else 문제 중첩된 if 문에서 else는 어떤 if의 else인가? 예제 if c1 then if c2 then S1 else S2 해석 1 if c1 then (if c2 then S1 else S2) 2 if c1 then (if c2 then S1) else S2 31

구문과 프로그램 신뢰성(reliability) 각 언어에서의 dangling else 문제 해결책 Algoll 60 1 if c 1 then begin if c 2 then S 1 else S 2 end 2 if c 1 then begin if c 2 then S 1 end else S 2 Algol 68 1 if c 1 then if c 2 then S 1 else S 2 fi fi 2 if c 1 then if c 2 then S 1 fi else S 2 fi PL/I 2 IF c 1 THEN IF c 2 THEN S 1 ; ELSE S 2 ; 또는 IF c 1 THEN IF c 2 THEN S 1 ; ELSE; ELSE S 2 ; Pascal 2 if c 1 then begin if c 2 then S 1 end else S 2 또는 if c 1 then if c 2 then S 1 else else S 2 PL/I과 Pascal은 일반적으로 1의 경우로 해석(가장 가까운 then의 else로 처리) 32 프로그래밍 언어 구현 기법 고급 언어는 기계어나 그와 상응하는 언어로 번역되어야만 함 번역 기법과 인터프리터 기법으로 분류 번역 기법 Source (원시 언어) Translator Target (목적 언어) 원시 프로그램 목적 프로그램 고급 언어 컴파일러 목적 모듈 고급 언어 컴파일러 목적 모듈 고급 언어 컴파일러 목적 모듈......... 어셈블리 언어 어셈블러 목적 모듈 Linker 로드 모듈 Loader 입력 자료 기계어 실행 결과 33

프로그래밍 언어 구현 기법 번역기법의 종류 1 컴파일러(compiler) -원시언어: 고급 언어 / 목적 언어 : 실제 기계 언어에 가까운 저급 언어 - 저급 언어 : 준 기계어 형태 또는 어셈블리 언어 2 어셈블러(assembler) -원시언어: 어셈블리 언어 / 목적 언어 : 준 기계어 형태 3 링케이지 에디터(linkage editor) - 여러 개의 프로그램(재배치 형태 기계어)을 묶음 로드 모듈 생성 - 로드 모듈 : 어느 정도 실행 가능한 하나의 기계어 프로그램 4 로더(loader) - 기계어 프로그램(로드 모듈)을 실제 실행 가능한 기계어로 번역해서 주 기억 장치에 적재 5 프리프로세서(preprocessor) - 원시 언어와 목적 언어가 모두 고급 언어인 번역기 - 고급 언어에 대한 언어를 확장하여 구현할 때 유용 (C++, concurrent C) 34 프로그래밍 언어 구현 기법 인터프리터 기법 고급 언어 기계를 다른 기계에서 소프트웨어로 simulation하는 방법 입력 자료 번역기 종류와 Interpreter 고급 언어로 작성된 원시 프로그램 인터프리터 실행 결과 원시 언어(입력) 소프트웨어 프로그램 목적 언어(출력) 고급 언어 프로그램 어셈블리 프로그램 번역기 목적 모듈(준기계어) 로드 모듈 컴파일러 어셈블러 링커(linker, linkage editor) 로더 (relocating loader) 기계어, 준기계어 (목적 모듈) 기계어, 준기계어 (목적 모듈) 로드 모듈 실행 가능 기계어 고급 언어 프로그램 Preprocessor 고급 언어 프로그램 원시 언어 (입력) 소프트웨어 프로그램 (하드웨어 기능) 출 력 인터프리터 고급 언어 프로그램 Interpreter 프로그램이 실행된 결과 35

인터프리터와 번역 기법의 비교 번역기 입력 프로그램과 동일한 의미의 목적 언어 프로그램 생성 인터프리터 직접 입력 프로그램을 실행하는 방법으로 처리 비교 분석 순수 번역 기법 (Assembly 등 저급 언어 가능) 순수 시뮬레이션 기법 (JCL, APL 등) 번역 효율적인 부분(반복 수행부와 수식 계산 등) 존재 원시 코드의 simulation이 효율적인 부분(I/O routine 등) 존재 순수 번역 기법이나 순수 시뮬레이션 기법은 실제로 거의 존재치 않음 적응성 simulation 효율성 Translation (object 모듈 발생) (I/O routine등 일부 code는 simulation) 36 인터프리터와 번역 기법의 비교 번역 기법의 장단점 장점 : 실행 시간 효율성 제공 (한번 decoding으로 반복 실행) 단점 : 번역된 프로그램이 큰 기억 장치 요구 (I/O routine 등) 인터프리터 기법의 장단점 번역 기법과 장단점이 반대 사용자 적응성(flexibility) 제공 하이브리드(hybrid) 기법 프로그램을 실행시키기 쉬운 형태로 번역한 후, 번역된 프로그램을 시뮬레이션으로 실행 현재 대부분의 인터프리터 언어가 이 방법을 따름 중간 형태 코드가 저급 언어이면 번역 기법으로 간주되기도 함 원시 프로그램 적당한 번역과정 중간 형태 코드 입력 자료 실행 결과 인터프리터 37

컴파일러 언어와 인터프리터 언어 컴파일러 언어 Fortran, Algol, PL/I, Pascal, Cobol, C, C++, Ada,... 컴파일러 방법의 장점 기계어로 번역된 것을 하드웨어 인터프리터가 decoding하여 실행 빠른 프로그램 실행(효율성) 인터프리터 언어 Lisp, SNOBOL4, APL, Prolog 구현 방법 번역기가 중간언어를 생성 후, 이를 다시 소프트웨어 인터프리터로 실행 hybrid 방법 인터프리터 방법의 장점 컴파일러 방법보다 실행 시간이 비효율적이지만 사용자에게 flexibility를 제공 38 Copyright, 2011 H. Y. Kwak, Jeju National University. To be Continue.. http://cybertec.cheju.ac.kr