본문 바로가기

컴파일러4

[컴파일러] 06. 어휘 분석 - LEX LEX - 입력 스트림에서 정규표현으로 기술된 토큰들을 찾는 프로그램 작성에 도움을 주는 SW - chomsky가 고안한 hierarchy 중 type 3인 Regular Grammar를 사용하고 이를 이용해 만든 언어를 Regular Language라고 함 Lex source %% %% dcl part : %{ ... %} macro definitions : name translation regular expressions + actions c 부프로그램들로 그대로 lex.yy.c에 복사된다. Lex regular expressions (렉스의 정규표현) Text characters : 입력 스트림에서 실제 매칭되는 부분 Operator characters : 토큰의 구조를 쉽게 표현할 수 있도록 Le.. 2023. 4. 12.
[컴파일러] 03. 정규 언어 (Regular Language) 정규 문법과 정규 언어 (Regular Grammar & Regular Language) 정규언어 : 토큰의 형태를 기술하는데 사용하는 언어 The methods for specifying the regular languages 1) regular grammar (rg) 정규 문법 2) regular expression (re) 정규 표현 3) finite automata (fa) 유한 오토마타 1. 정규문법 : 정규 언어를 기술하는 형식 문법 - 생성 규칙에 따라 분류한 네가지 문법 형태 중 가장 간단한 형태인 Type 3 문법 - 어휘 분석 과정에서 인식되는 토큰 구조를 표현하는데 이용 Type 3 Grammar (N.Chomsky) - RLG (Right Linear Grammar) : A->tB,.. 2023. 4. 8.
[컴파일러] 02. 형식언어_문법의 분류 문법의 분류 (Chomsky Hierarchy) α -> β ∈ P의 형태에 따라 Type 0 : No restrictions(unrestricted grammar, UG) • 생성규칙에 제한이 없음. 다만 α 는 ε 가 될 수 없음. Type 1 : Context-sensitive grammar(CSG) • α -> β, | α | ≤ | β| 우측의 스트링 길이가 좌측보다 길다. Type 2 : Context-free grammar(CFG). • A -> α, where A : nonterminal, α ∈ V*. 좌측은 하나의 nonterminal이며, 우측은 terminal과 nonterminal로 이루어진 스트링이다. Type 3 : Regular grammar(RG). 정규문법 1) A -> .. 2023. 4. 6.
[컴파일러] 01. 컴파일러개론 컴파일러란? 주어진 language로 작성된 컴퓨터 프로그램을 다른 언어의 동등한 프로그램으로 변환하는 프로세스입니다. Cross-Compiler "A cross-compiler is a program which is to run on machine A and produce target code for another machine B." Interpreter 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. Preprocessor 입력 데이터를 처리하여 다른 프로그램에 대한 입력으로서 사용되는 출력물을 만들어내는 프로그램이다. 컴파일러 구조 Front-End : language dependent part Back-End : machine dependent part Lexi.. 2023. 4. 6.