Strong LL 조건
Intro
- Strong LL조건의 이해
Strong LL 조건
임의의 택일 규칙 A -> α | β ∈ P 에 대하여
다음을 Strong LL 조건이라 부른다.
LOOKAHEAD(A -> α) ∩ LOOKAHEAD(A -> β) = ∅
LOOKAHEAD가 같게되면 Nonterminal을 어떤 생성 규칙으로 확장해야 올바른 스트링을 유도할지 알 수 없기 때문에 LOOKAHEAD가 달라야 결정적 구문 분석이 가능하다.
Strong LL 조건을 만족하는 문법을 Strong LL(1) 문법이라 부르며, recursive-descent 구문 분석기가 결정적으로 구문 분석하기 위해서는 strong LL 조건을 만족 해야 한다.
예제
다음 문법이 strong LL(1) 문법인지 확인
S -> bRS | RcSa | ε
R -> acR | b
LOOKAHEAD(S -> bRS) = FIRST(b) ⊕ FIRST(R) ⊕ FIRST(S) ⊕ FOLLOW(S)
= {b} ⊕ {a,b} ⊕ {a, b, ε} ⊕ {a, $}
= {b}
LOOKAHEAD(S -> RcSa) = FIRST(R) ⊕ FIRST(c) ⊕ FIRST(S) ⊕ FIRST(a) ⊕ FOLLOW(S)
= {a, b} ⊕ {c} ⊕ {a, b, ε} ⊕ {a} ⊕ {a, $}
= {a,b}
LOOKAHEAD(S -> bRS) ∩ LOOKAHEAD(S -> RcSa) = {b} 이므로
Strong LL 조건을 만족하지 않는다. 따라서 strong LL 문법이 아니다.
댓글남기기