ANSI C Grammar and Lex Specification - ANSI에 의해 표준화되어 있는 C언어의 문법을 Lex로 표기한 것이다. ANSI C Grammar (Lex) - 모든 경우의 문자 입력에 대한 Lexical Analyzer의 처리 방식을 기술한 것이다. Notation 처리부 D [0-9] ⇔ 0부터 9까지의 문자(숫자)중 하나를 D로 Reduce한다.(D를 지칭한다.) L [a-zA-Z_] ⇔ 영문 대소문자와 언더바가 붙은 형태를 L로 Reduce한다. H [a-fA-F0-9] ⇔ 16진수를 H로 Reduce한다. E [Ee][+-]?{D}+ ⇔ Scientific Notation를 숫자의 일부로 간주한다. (?는 or의 의미이다.) FS (f|F|l|L) ⇔ Floating-Po..
4장 프로그래밍 언어의 구문과 구현 기법 4.0 Intro PL = Syntax(언어 구문) + 언어 의미 Syntax(구문) : PL의 구조를 의미한다. - 구문과 의미 모두 자연어로 기술될 수 있다. 실제로 초창기 PL의 구문과 의미 모두 영어로 기술된 형태였다. - 구문은 오랜 기간동안 사용된 방법인 형식 시스템으로 기술된다. - 오늘날에도 대부분의 언어 의미는 영어로 기술된다. Context Free Grammar(문맥 자유 문법) - 1950년 Noam Chomsky가 고안한 개념이다. - Formal Definition이 뒷 받침되어야 하는 문법이다. - 문맥 자유 문법을 기술하기 위한 표기법으로 BNF 표기법이 있다. BNF 표기법 - 문맥 자유 문법을 기술하기 위한 표기법이다. - 1963..
설계 기준의 역사적 변천 - 언어 설계 기준 : 언어의 구조, 특징의 구현 난이도 - 언어 평가 기준 : 실행 효율성, 판독성, 작성력, 신뢰성 - 판독성, 추상화, 복잡성 제어는 시대를 막론하고 모든 PL 설계 문제에 공통으로 해당되는 사항들이다. 1. 1950's - 1950년대 프로세서의 처리 속도는 매우 느렸고, 절대적 메모리 공간 또한 부족했다. - 초기의 PL 설계 기준은 Effiency of Execution(실행 효율성)이었다. - 그 당시, PL의 프로그램 Writability(작성력)*은 실행 효율성 보다는 중요시되지 못했다. - 그 당시, 프로그램을 작성하는 사람은 소수에 불과해 Readability(판독성) 또한 중요시되지 못했다. * Writability : PL을 사용해서 계산을..
Programming Language History 프로그래밍 언어의 역사 제 1세대 언어 : 어셈블리 언어 제 2세대 언어 : 비 구조적 고급 언어 제 3세대 언어 : 프로시저 위주 고급 언어 (Pascal, C) 제 4세대 언어 : 특수 목적 언어* 제 5세대 언어 : 초고급 언어** (Prolog, SETL) * 제 4세대 언어 (특수 목적 언어) - DB 시스템을 제어하기 위해 만들어진 명령어에서 출발했다. - Editor, Debugger, Word Processor, Control Utility(제어용 유틸리티)과 같은 개발 도구들에 포함되는 경우가 흔했다. - PL 설계 이론에 공헌한 바는 작지만 실용성이 크다는 특징이 있다. ex) SQL, Lotus, Delphi, Visual Basic..
PL Definition 프로그래밍 언어 정의 - 프로그래밍 언어는 정확한 형식이 기술되어야 한다. - 언어의 구조와 의미의 Formal한 기술 없이는 프로그래밍이 불가능하다. - Ambiguity(모호성)*이 없는 언어를 위해서도 Formal Definition(형식 정의)가 필요하다. - ANSI, ISO와 같은 표준 기구에서는 프로그래밍 언어의 표준 정의를 규정하고 있다. * 모호성 - 애매성 - 모호성 : 외관(외연)이 불분명한 경우를 지칭하는 용어이다. PL에서는 구문과 연관되어진다. - 애매성 : 내관(내연)이 불분명한 경우를 지칭하는 용어이다. Category of PL Definition (언어 정의의 범주) - 프로그래밍 언어 형식 정의에는 외부적 정의냐 내부적 정의냐에 따라 Syntax..
Logical Language (Declarative Language) 논리형 언어 (선언적 언어) - 기호 논리학에 근거한 언어이다. Ex. Prolog Code gcd(U, V, U) :- V=0. gcd(U, V, X) :- V>0, Y is U mod V, gcd(V, Y, x). - 유클리드 호제법에 근거한 코드이다.