본문 바로가기

반응형

컴퓨터

LEX - LEX는 1975년 Bell 연구소의 Lesk와 Schmidt에 의해서 개발 - Lex는 사용자가 정의한 정규표현과 수행코드를 입력으로 받아, 일반 범용언어인 C로 쓰여진 프로그램을 출력 - 출력된 C 프로그램은 입력문자열에서 정규표현에 해당하는 토큰을 찾았을 때, 그에 결합된 수행코드를 수행한다. LEX의 입력 세 부분 정의부분(Definition Part) %% 변환규칙부분(translation rules part) %% 사용자 부프로그램부분(user subprograms part)각 부분은 생략될 수 있으며 %%에 의해 구분 정의부분 - 이름과 일련의 표현식들로 구성 - 이름은 적당한 식별자이고 표현식은 이름에 해당하는 정규표현이다. 변환규칙 부분 - 표현식들과 일련의 수행코드들로 구성되며 표현.. 더보기
어휘 분석 ( lexical analysis ) 어휘 분석(Lexical Analysis) - 원시 프로그램을 읽어서 토큰(token, 의미있는 문법단위)으로 분리하는 작업 토큰(token) - 의미있는 문법적 단위. 식별자/상수/예약어/연산자/구분자 등 어휘 분석기 설계(순서) 1. 정규문법이 주어져야 함 2. 주어진 문법에 대한 토큰표 작성 3. NFA작성 4. NFA->DFA변환 5. DFA최적화 어휘 분석기 구현 - 문법이 어떻게 주어지는지 명확하게 정의 - 토큰 사용빈도를 확률개념으로 분석해야 함 - 구문분석과 어휘 분석의 선후관계 결정 - 구현방법 예 : 프로그래밍 언어를 이용하여 직접 구현하거나 자동화도구 사용 어휘분석기 생성기 - 컴파일러 생성기 또는 컴파일러-컴파일러의 일부분 - 어휘분석기를 자동생성하는 도구 LEX, FLEX, Sca.. 더보기
형식언어와 오토마타 ( formal language and automata ) 목표 - 형식언어의 문법 및 표기법 이해 - 정규언어와 유한 오토마타의 관계 - 정규표현, 정규문법, 유한 오토마타가 서로 변환되는 관계 요약 - 형식언어 : 어떤 알파벳에서 얻은 기호들로 구성되는 문자열들의 집합 - 형식문법 : 형식언어를 생성하기 위한 규칙. 정규표현(regular expression) 문법도표(syntax diagram) BNF(Backus-Naur Form) EBNF(Extended BNF) - 유한 오토마타 : 형식언어 인식을 위한 방법 결정적 유한 오토마타(Deterministic Finite Automata,DFA) = 하나의 입력문자열에 대해서 오직 하나의 다음 상태가 결정됨 비결정적 유한 오토마타(Nondeterministic Finite Automata,NFA) = 다음.. 더보기
프로그래밍언어론 - 중간고사 기출문제 2005-2 1. 신택스와 시맨틱스에 대해서 설명하시오. - 신택스(syntax)는 언어 구성 요소의 외부적인 형태, 즉 문법에 관한 것으로서 언어의 구성 요소들을 결합하여 다른 요소를 만드는 방법을 설명한 것이다. - 언어의 신택스는 공식적 정의로 표현되는 경우가 많으며 대부분 文脈無關型 문법(context-free grammar)으로써 정의되고 있다. - 시맨틱스는 언어의 의미이다. - 신택스의 경우와는 달리 시맨틱스를 공식적으로 정의할 수 있는 방법으로 널리 인정받고 있는 것이 아직은 없지만 실행적(operational) 방법, 함수적 혹은 표시적(denotational) 방법, 공리적(axiomatic) 방법이 대표적이다. - 실행적 방법에서는 하나의 假想 컴퓨터를 想定하고 프로그래밍 언어의 각 .. 더보기
Architectural benefits of Spring Architectural benefits of Spring http://www.theserverside.com/tt/articles/article.tss?l=SpringFramework - Spring can effectively organize your middle tier objects, whether or not you choose to use EJB. Spring takes care of plumbing that would be left up to you if you use only Struts or other frameworks geared to particular J2EE APIs. And while it is perhaps most valuable in the middle tier, Spri.. 더보기
분석 나무와 모호성 ( parse tree and ambiguity ) 분석 나무(parse tree) - 유도의 대치 과정을 나타낸 나무 구조. - 내부 정점(문법 구조명인 비종결자)과 잎(leaf)(단어 혹은 토큰기호인 종결자)로 구성 관련 링크 웹에서 분석나무 그리기 phpSyntaxTree -> http://www.ironcreek.net/phpsyntaxtree/ TreeForm Syntax Tree Drawing Software -> http://www.ece.ubc.ca/~donaldd/treeform.htm Linguistic Tree Constructor-> http://ltc.sourceforge.net/ Wikipedia -> http://en.wikipedia.org/wiki/Parse_tree 모호한 문법(ambiguous grammar) : 동일한 .. 더보기
프로그래밍 언어의 역사 (Computer Language History) Éric Lévénez http://www.levenez.com/lang/ http://www.levenez.com/lang/history.html The History of Programming Languages http://www.oreilly.com/news/graphics/prog_lang_poster.pdf Wikipedia http://en.wikipedia.org/wiki/Programming_language 더보기
프로그래밍 언어의 요건 ∙ 좋은 프로그래밍 언어가 갖추어야 할 조건 (1) 프로그래밍 언어의 개념이 분명하고 단순해야 하며 일관성이 있어야 한다. (2) 신택스가 분명해야 한다. (3) 자연스럽게 응용할 수 있어야 한다. (4) 추상(abstraction)을 지원할 수 있어야 한다. (5) 프로그램 검증이 용이하여야 한다. (6) 적절한 프로그램 작성 환경이 갖추어져 있어야 한다. (7) 프로그램이 호환성이 있어야 한다. (8) 효율적이어야 한다. 더보기

반응형