본문 바로가기

컴퓨터과학[3-2]/컴파일러16

컴파일러구성 - [제10강] CLR 구문분석 컴파일러구성 - [제10강] CLR 구문분석 SLR 충돌문제와 lookahead ·closure와 GOTO 함수 ·CLR 파싱표와 구문분석 컴파일러 용어정리 LR Left to right scanning and Right parseSLR 구문분석 Simple LR 구문분석은 LR 구문분석 방법 중 가장 간단하게 구현될 수 있는 방법이다. SLR 파싱표를 만드는 방법은 LR(0) 항목의 집합과 FOLLOW를 이용한다.CLR 구문분석 Canonical LR 구문분석은 SLR 의 충돌문제를 해결한 구문분석 방법이다. lookahead를 이용하는 방법인데, lookahead를 구해야 하므로 과정이 복잡하고 시간이 오래 걸리며 파싱표가 커진다.LR(1) LR(0)항목에서 lookahead 정보를 첨가한 것. LR.. 2016. 7. 18.
컴파일러구성 - [제9강] LR 구문분석 컴파일러구성 - [제9강] LR 구문분석 증가문법 ·closure와 GOTO 함수 ·SLR 파싱표 와 구문분석 컴파일러 용어정리 LR(k) 문법 모든 엔트리(entry)에 대해, 유일하게 정의되는 파싱표를 만들 수 있는 문법을 말한다. 여기서 k를 lookahead의 길이라고 하며, 이는 handle을 결정하는 데 k개의 입력기호에 이르기까지 조사하는 것LR(0) 항목 생성규칙의 오른쪽에 점기호(dot symbol)를 가진 생성규칙증가문법 G=(VN,VT,P,S)에서 G에 첨가된 문법 즉, 시작기호 {S'→S} 를 하나 더 추가한 문법이다..Closure 마크기호가 [A→ α․Bβ]와 같이 논터미널인 경우에 이 논터미널 B를 생성규칙의 왼쪽으로 갖는 LR(0) 항목을 구하는 것을 closure라고 한다... 2016. 7. 18.
컴파일러구성 - [제8강] 순위관계에 의한 구문분석 컴파일러구성 - [제8강] 순위관계에 의한 구문분석 여러가지 순위분석연산자 순위 구문분석 단순순위 구문분석 컴파일러의 용어정리 연산자 문법 : 연산자 문법은 ε-생성규칙을 갖지 않고, 생성규칙의 오른쪽에 2개 이상의 논터미널이 연속해서 나올 수 없음. 연산자 순위문법 : 연산자 문법이면서 두 개의 터미널 기호 사이에 많아야 한 개의 연산자 순위관계를 갖는 것을 말하고, 이 문법에 의해 정의된 언어를 연산자 순위언어라 함. 단순순위문법 : ε-생성규칙을 갖지 않고, 오른쪽 부분이 같은 생성규칙은 존재하지 않는다. 또한 기호 사이에 많아야 한 개의 Wirth-Weber 순위관계를 가짐. 순위문법의 종류 : 순위문법들에는 연산자 순위문법(operator precedence grammar), 단순 순위문법(si.. 2016. 7. 12.
컴파일러구성 - [제7장] 구문분석 개요 컴파일러구성 - [제7장] 구문분석 개요 bottom-up 구문분석 shift-reduce 구문분석, FIRST 와 FOLLOW 컴파일러 용어정리 핸들(handle) : Bottom-up 구문분석에서 reduce 되는 부분 reduce : 유도과정을 거꾸로 적용한 것. 즉, S ‗⇒ αAw ‗⇒ αβw의 유도과정이 존재할 때, 문장형태 αβw 에서 β를 A로 대체하는 것 Shift : 입력기호를 스택에 넣는 것 단일 생성규칙(single production) FOLLOW(A) = {a ∈ VT ∪ {$} | S ‗⇒ αAaβ, α, β ∈ V*} 즉, 어떤 문장형태에 있어서, 논터미널 A 다음에 나타나는 터미널 기호들의 집합이다. 여기에서 $기호는 입력 문자열의 끝을 나타내는 기호 FIRST : 문자열 .. 2016. 7. 12.
컴파일러구성 - [제6장] Context-free 문법의 효율화 컴파일러구성 - [제6장] Context-free 문법의 효율화 유도 트리 모호성 Context-free 문법의 효율화 푸시다운 오토마타 컴파일러 용어정리 푸시다운 오토마타 (push-down automata) : context-free 언어를 받아들이는 인식기 유도트리(derivation tree) : 구문분석을 하는 과정에서 문장이 유도되는 과정을 트리형태로 표현하는 것 모호성(ambiguous) : 문법 G에 의해 생성되는 어떤 문장이 두 개 이상의 유도트리를 갖은 경우 단일 생성규칙(single production) : 생성규칙들 중 생성규칙의 오른편이 단 한 개의 논터미널로 구성되어 있는 생성규칙이 존재하는 경우 backtracking : 문장을 유도하다가 일치하지 않아서 다른 문법 규칙을 적용.. 2016. 7. 12.
컴파일러구성 - [제5장] 어휘분석기와 LEX 컴파일러구성 - [제5장] 어휘분석기와 LEX 어휘분석기 설계 및 구현 ·LEX 소개 및 실행 컴파일러 용어정리 토큰(token) : 의미 있는 문법적 최소 단위 예약어(reserved word) : 언어 구현시 이미 지정되는 지정어로 IF, WHILE, DO, FUNCTION 등 연산자(operator) +,*,/,-, :=, AND,OR 등으로 사칙연산자, 치환연산자, 논리연산자 등이 있다. 구분자(delimiter) 단어와 단어를 구분하기 위해 사용되는 기호들 복귀값(return value) 프로그램에서 함수(function)를 호출(call)하였을 때 그 결과로서 돌려받는 값. 수행 결과나 ‘0’, ‘-1’ 등 미리 지정된 값을 받을 수도 있으며, 그 반환값을 출력하는 대신 하나의 변수에 할당할 .. 2016. 7. 12.