프로그래밍언어론 37

[프로그래밍 언어론] Data Type part 2 - Ordinal Type : 순서 타입

* Ordinal Type : 특정 타입이 취할 수 있는 값이 주어진 것. 즉 사용자가 지정해준 변수 값 많을 취한 수 있다. 1. Enumeration Types (열거 방식) - 타입이 취할 수 있는 값을 일일이 열거 해주는 방식 ex) (in C) enum colors { red, blue, green, yellow } // 각각의 요소는 숫자 인덱스로 지정되있다. // red = 1 , blue = 2 , green = 3 , yellow = 4 colors mycolor = red; // mycolor은 red, blue green, yellow만 취할 수 있다. mycolor++; // 각각의 요소에 숫자가 부여 되있으므로 ++시 다음요소 값 이동 // 즉 mycolor값은 blue가 된다. ..

[프로그래밍 언어론] Data Type Part 1

1. 타입의 환경 (Evolution of Data Types) - 1956년 : FORTRAN - INTEGER, REAL, arrays 등 간단한 것만 사용을 했었다. - 1983년 : Ada - 사용자가 데이터타입을 만들어서 사용하면서, 복잡한 데이터 유형이 나타나기 시작했다. 2. 타입 설계 (Type Design) - 타입을 명세하는 기법. 즉, 타입을 바인딩하는 기법을 말한다. - 타입에 의해 바인딩 된 것은 타입으로 할 수 있는 연산자를 같이 바인딩 된다. - Primitive Data Type 방식과 Not-Primitive Data Type 방식이 있다. 3. Primitive Data Type - 다른 데이터에 의해서 정해지지 않고, 자기 자신자체로 데이터가 된다. - 우리가 쓰고 있는..

[프로그래밍 언어론] 명령형 언어의 특징 2 - 변수(value)

명령형 언어의 특징이라는 주제를 달고 나온 부분은 자신이 프로그램언어를 개발시 고려해야할 상항에 대해서 나와 있는 것입니다. ----------------------------------------------------------------------------------------------------- * 변수란? - 메모리 공간에 대한 추상화 - 6개의 특징이 포함되어 있어야 한다. > name, address, value, type, lifetime, and scope - 선언된 변수는 symbol Table에 변수를 저장한다. ex) int a,b,c; //symbol Table에 저장 1. Name(이름) : "명명법은 명령형 언어의 특징 1"에서 이미 소개 되어 있기 때문에 건너띈다. 2. ..

[프로그래밍 언어론] 명령형 언어의 특징 3 - Binding

명령형 언어의 특징이라는 주제를 달고 나온 부분은 자신이 프로그램언어를 개발시 고려해야할 상항에 대해서 나와 있는 것입니다. ----------------------------------------------------------------------------------------------------- * 바인딩이란? 변수나 예약어등 프로그래밍언어를 구성하고 있는 여러 것에 속성을 부여하는 것을 "바인딩한다"라고 한다. ex) int x; // 변수 x에 integer타입을 바인딩했다. x = 3;// 변수 x에 3이라는 값을 바인딩했다. * 바인딩이 일어나는 시간 1. 설계시 : 설계자에 의해서 기호(+, - 등)와 기호가 하는 일이 바인딩 된다.(ex> +는 더하는 역할을 한다) 2. 구현시 : ..

[프로그래밍 언어론] 명령형 언어의 특징 1 - 명명법(identifier)

명령형 언어의 특징이라는 주제를 달고 나온 부분은 자신이 프로그램언어를 개발시 고려해야할 상항에 대해서 나와 있는 것입니다. ----------------------------------------------------------------------------------------------------- * 명명법(identifier) : 명명법을 표현하기 위해서는 다음 4가지를 고려 해야한다. 1. 길이 예전에는 컴퓨터의 메모리가 적었기에 이름의 길이를 제한하고 있었다. 예를들어 FORTRAN은 최대 6개로 이뤄져있고, 프로그램언어를 영어처럼 표현하기 위한 목적으로 만들어진 COBOL에서도 최대를 30으로 제한하고 있다. 현재에는 메모리가 풍부하여, 이름의 길이에 제한하지 않는 언어가 많이 있다. 변..

[프로그래밍 언어론] AGs(Attribute Grammars)

1. Context-Free(BNF/EBNF)의 한계 - 오류에 대한 처리는 어떻게 할 것인가? ( ex//각각 변수의 타입사이의 차이의 표현 ) - 변수는 사용하기 이전에 선언 되어야 되는데 표현이 가능할가? > 표현이 불가능하거나, 번거로운 것을 해결하기 위해 나온 것이 Attribute Grammars(AGs)이다. 2. AGs - 특징 ⓐ 문법의 표현에 속성(Attribute) 값이 추가가 되었다. > Synthesized Attribute : (Parse트리로 표현시)자식노드로부터 자신의 속성을 결정 자식노드의 평균 값, 최대/최소값 등 지정한 방법에 의해 속성을 자식으로부터 받는다. > Inherited Attribute : (Parse트리로 표현시)부모나 형제 노드로부터 자신의 속성을 결정 ..

[프로그래밍 언어론] 모호함 / EBNF

룰을 통해서 문법을 생성함에 따라서 모호함이 발생한다. 이러한 모호함은 다음의 과정에 의해 지울수 있다. 일단 이전에 보았던 수학 기호에 대한 모호함이 발생 했을 시에 대해서 한번도 보고 가도록 하자. 1. 수학기호에 대한 모호함이 발생 수학기호에 대해서 모호함이 발생했을 때에는 수학기호를 우선순위에 의해서 나눠서 생각한다. 또한 우선순위가 낮은 것부터 정의를 하기 시작한다. 예를 들어 다음과 같은 문법이 존재한다고 한다. -> -> | -> * | / | - | + 이 연산식을 모호함을 없앤다고한다면 연산 우선순위를 나눠 본다. + - 와 / * 로 나뉘는데 이것중 + - 의 우선순위가 더욱 느리다. 따라서 다음과 같이 정의가 된다. -> - | + | -> * | / | 로 수정을 하여 모호함을 없앨..

[프로그래밍 언어론] Parse tree와 모호함(Ambiguous)

1. Parse Tree - 파스트리 : 앞에 프로그래밍 언어 설명에 잠깐 소개가 되었다. - 간단히 파스트리의 특징에 대해서 알아보자 ⓐ 트리의 Leap에 속하는 것은 모두 사용자의 눈에 보이는 Terminal Symbol이다. ⓑ Leap속성을 제외한 모든 노드는 Non-Terminal Symbol이다. ⓒ 아래로 내려갈 수록 실행 순서가 빨라진다. - 이러한 파스트리는 컴파일러가 컴파일시 작성을 하여, Leap노드의 원소를 보아서 ⓐ 모두 Terminal Symbol이다. 라면 문법이 성립 ⓑ Non-Terminal Symbol이 하나라도 있다. 라면 문법이 성립하지 않음 을 정한다. 2. Ambiguous(Ambiguity 애매 모호함) - 어떠한 문법은 같은 형태의 식을 2가지 이상의 파스트리로..

[프로그래밍 언어론] 구문과 의미 묘사법

1. Syntax & Semantics (구문 & 의미) 정의 - Syntax : 문법(form), 일정형태로 형식에 맞게 작성 된다. - Semantics : 문법에 맞는 형식을 취했을 때 그 문법이 하는 일, 의미 ex) if ( ) - 프로그래밍 언어의 정의 ⓐ 몇몇의 단어(알파벳)은 문장을 만든다. ⓑ 문장이 합쳐져서 언어가 된다. // 언어의 일반적 정의 ⓒ lexeme(어휘 항목) : 언어를 나눌 때 의미를 가지게 하는 것끼리 나눈 것 //프로그래밍 언어에서의 ⓓ token(토큰) : lexeme의 의미 및 행동 //단어와 문장의 역할 > 단순성을 위해 가장 낮은 수준으로 표현 ex) index = 2 * count + 7 ; 2. 구문 묘사법 - recognizers : 컴파일러에서 사용, ..

[프로그래밍 언어론] 프로그램 언어의 탄생과 기여 Part 2

1. PL/I - 65년 프로그램언어의 양분화 현상(과학용/비지니스용) - 서로의 다른 면을 바라 보고 프로그램이 모든 컴퓨터에서 하나의 언어로 하는 것을 목표로 개발 - 특징 ⓐ 동시에 실행하는 테스크 생성 허용 ⓑ 예외 탐지 가능(최초) ⓒ 재귀함수의 사용이 허용됨 ⓓ 다차원 배열에서의 특정원서 지정이 가능해짐 ⓔ 포인터 사용 가능 - 과학용언어와 비지니스언어의 합침으로인해 복잡해지고, 잘못된 디자인도 발생됨. > 대중성이 떨어짐 2. Dynamic Language 부류의 탄생 - static language(ex:c언어)와 반대대는 것으로 변수의 type이 지속적인 변화가 가능 - 수행 속도가 느림 - Dynamic Language의 시초 ⓐ APL : 구문예 → X[ㅁX+,=''';] / 막강한 ..