Search
🏫

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

[컴파일러 구성] 7. 구문분석 (4) SLR 구문분석
CS
Compiler
2023/11/2715:05
[컴파일러 구성] 7. 구문분석 (4) SLR 구문분석
CS
Compiler
2023/11/2715: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 항목을 포함한 상태들 예시