| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Replication
- unity
- MAC
- CTF
- 언리얼 엔진
- 게임 개발
- rpc
- attribute
- gameplay tag
- 보안
- stride
- Multiplay
- Unreal Engine
- animation
- 언리얼엔진
- 게임개발
- listen server
- Aegis
- UI
- linear regression
- local prediction
- gameplay ability system
- os
- gas
- ability task
- widget
- 유니티
- C++
- gameplay effect
- photon fusion2
- Today
- Total
Replicated
구문 분석 : 상향식 구문 분석 / LALR 구문 분석 본문
SLR보다 훨씬 강력하고 CLR보다 파싱표가 작음
모호하지 않은 문맥 자유 문법으로 표현된 거의 모든 언어를 인식 가능, 에러 초기 탐지 가능
그러나 LR(0) 항목의 집합을 구한 후 파싱표를 만들기 위해 감축 항목이 있는 각 상태에서 lookahead 기호를 구하는데 상당한 시간과 노력이 소요됨
LALR 파싱표 구성 방법은 두 가지
- 파싱표를 구성하기 쉽지만 크기가 커지는 LR(1)을 가지고 구성하는 방법
- LR(0)와 lookahead를 가지고 구성하는 방법
CLR 파싱표로부터 LALR 파싱표 구하기
- 코어가 같은 거 그냥 묶어주면 됨
lookahead의 정의
- 상태 p에서 LR(0) 항목 [ A → α•β ]의 lookahed는 LA(p, [ A → α•β ] )로 표기하며, p상태에서 A 다음에 나올 수 있는 터미널 기호의 집합
- γα가 상태 p를 access 한다는 것은 시작 상태로부터 γα만큼 보고 상태 p로 이동을 하였다는 의미
S -> L = R
S -> R
L -> * R
L -> id
R -> L
(1) 증가 문법
0. S' -> S
1. S -> L = R
2. S -> R
3. L -> * R
4. L -> id
5. R -> L
(2) LR(0) 항목의 정규 항목 집합과 GOTO 그래프


SLR이라면 여기서 이동-감축 충돌이 발생
여기서, [ R -> L• ] 의 lookahead가 필요
결국 얘도 구해야 한다
[ S' -> •S, $ ]
[ S -> •L=R, $ ]
[ S -> L•=R, $ ] -> $여야 감축 가능
[ R -> •L, $ ]
[ R -> L•, $ ] -> $여야 감축 가능
(충돌이 안나는 부분도 lookahead 참고 필요, 그냥 생략)
(3) LALR 파싱표
| 상태 | 구문 분석기 행동 | GOTO 함수 | |||||
| = | * | id | $ | S | R | L | |
| 0 | s4 | s5 | 1 | 3 | 2 | ||
| 1 | acc | ||||||
| 2 | s6 | r5 | |||||
| 3 | r2 | ||||||
| 4 | s4 | s5 | 7 | 8 | |||
| 5 | r4 | ||||||
| 6 | s4 | s5 | 9 | 8 | |||
| 7 | r3 | r3 | |||||
| 8 | r5 | r5 | |||||
| 9 | r1 | ||||||
(4) *id=id$ 구문 분석
| 단계 | 스택 | 입력 기호 | 구문 분석 내용 |
| 0 | 0 | *id=id$ | s4 |
| 1 | 0*4 | id=id$ | s5 |
| 2 | 0*4id5 | =id$ | r4 |
| 3 | 0*4L | =id$ | GOTO 8 |
| 4 | 0*4L8 | =id$ | r5 |
| 5 | 0*4R | =id$ | GOTO 7 |
| 6 | 0*4R7 | =id$ | r3 |
| 7 | 0L | =id$ | GOTO 2 |
| 8 | 0L2 | =id$ | s6 |
| 9 | 0L2=6 | id$ | s5 |
| 10 | 0L2=6id5 | $ | r4 |
| 11 | 0L2=6L | $ | GOTO 8 |
| 12 | 0L2=6L8 | $ | r5 |
| 13 | 0L2=6R | $ | GOTO 9 |
| 14 | 0L2=6R9 | $ | r1 |
| 15 | 0S | $ | GOTO 1 |
| 16 | OS1 | $ | acc |
'학부 > 오토마타와 컴파일러' 카테고리의 다른 글
| 의미 분석(semantic analysis)과 형 검사 (0) | 2025.12.04 |
|---|---|
| 모호한 문법의 사용과 에러 처리 루틴 (0) | 2025.11.30 |
| 구문 분석 : 상향식 구문 분석 / CLR 구문 분석 (0) | 2025.11.30 |
| 구문 분석 : 상향식 구문 분석 / SLR 구문 분석 (0) | 2025.11.30 |
| 구문 분석 : 상향식 구문 분석 (0) | 2025.11.30 |