LALR 파싱 테이블 구성 방법

Intro

  • LALR 파싱 테이블 구성방법

LALR 파싱테이블 구성 방법

LALR은 LOOKAHEAD정보를 이용하기 때문에 SLR보다 훨씬 강력하면서도 CLR에서 CORE가 같은 아이템을 묶기때문에 파싱테이블 크기도 SLR과 같이 구성할 수 있다.

LALR 파싱 테이블은 C1과 C0에서 작성 하는 방법이있다.

C1에서 유도

같은 core를 가진 LR(1) 아이템 집합들을 한 개의 LR(0) 아이템 집합으로 만들고 각 아이템의 lookahead는 LR(1) 아이템의 lookahead 합집합으로 구성하는 방법이다.

1

C1 예제

다음 C1 을 이용한 파싱테이블 작성

2

1.상태 I3과 I6이 같은 core를 가지고 있으므로 한 상태로 통합

I36:

[C->c.C ,c/d/$]
[C->.cC ,c/d/$]
[C->.d ,c/d/$]

2.I4과 I7 통합

I47:

[C->d. ,c/d/$]

3.I8과 I9 통합

I89:

[C->cC. ,c/d/$]

파싱 테이블

3

C0 예제

문법

S -> L=R | R
R -> L
L -> *R | id

추가된 생성 규칙

0. S' -> S
1. S  -> L=R
2. S  -> R
3. R  -> L
4. L  -> *R
5. L  -> id

C0과 GOTO 그래프

4

파싱 테이블

5

참고 저서

오세만, 컴파일러 입문, 정익사,2010, 340쪽

댓글남기기