Search
moon
sun
🏫

[컴파일러 구성] 7. 구문분석 (4) SLR 구문분석

Tags
CS
Compiler
Last edited time
2023/11/28 08:23
2 more properties
Search
🏫
[컴파일러 구성] 7. 구문분석 (4) SLR 구문분석
CS
Compiler
2023/11/27 15:05
🏫
[컴파일러 구성] 7. 구문분석 (4) SLR 구문분석
CS
Compiler
2023/11/27 15:05

1. LR 구문분석

•
순위관계에 의한 구문분석
◦
handle을 찾기 위해서 여러 가지 제약조건들을 줌
◦
이런 제약조건들 때문에 일반적인 프로그래밍 언어의 구문구조를 표현하기에는 적당하지 못한 단점 존재
•
LR(Left to right scanning and Right parse) 구문분석
◦
일반적인 프로그래밍 언어의 구문구조를 표현하고 구문분석을 하기 위해서 나온 방법
◦
종류
▪
SLR : Simple LR
▪
CLR : Canonical LR
▪
LALR : Lookahead LR
◦
푸시다운오토마타

2. LR(0) 항목과 Closure

2.1. LR(0) 항목

•
생성규칙의 오른쪽에 점기호(dot symbol)를 가진 생성규칙

2.2. 증가문법

•
G=(Vn,Vt,P,S)에서 G에 첨가된 문법
•
즉, 시작기호 {S'→S} 를 하나 더 추가한 문법

2.3. Closure

•
정의
◦
마크기호가 [A→ α․Bβ]와 같이 논터미널인 경우에 이 논터미널을 생성규칙의 왼쪽으로 갖는 LR(0) 항목을 구하는 것
◦
[A→ α·Bβ] 에서, 논터미널 B를 생성규칙의 왼쪽으로 갖는 LR(0) 항목들의 집합
◦
closure는 반복적으로 계속 적용
•
예

3. Canonical Collection

•
파싱표에서 상태들의 집합
•
GOTO 함수
◦
GOTO(I, X) = closure({[A → αX․β]| [A → α․Xβ∈I})
◦
현재 마킹한 상태에서 구문분석을 하기 위해, 마크기호를 하나씩 읽는 것을 의미
•
예시
GOTO 그래프

4. GOTO 그래프

•
GOTO 그래프
•
예시

5. SLR 파싱표 작성

5.1. SLR 파싱표 알고리즘

•
알고리즘

5.2. 예시

•
예시
•
논터미널 기호 → GOTO 함수
•
Reduce 항목을 포함한 상태들 예시