Top-Down 구문 분석 방식에서 비효율적인 backtracking을 피하기 위해서는 left-recursion을 갖지 않아야하고, left-factoring되어야 한다. 해보니까 쉬운데 왜 시험 땐 못풀었을까…?ㅠㅠㅠㅠㅜㅠㅜㅜㅠㅠㅜㅠㅜㅠㅜㅠㅜㅠㅠㅜ교수님나빠여
A→Aa와 같이 Left Recursion이 생기면 A를 택해야 할 지 Aa를 택해야 할 지 모르기 때문에 결정적으로 분석할 수 없게 된다. 그래서 Left Recursion을 제거해 주어야 한다.
예시) T → T*F | F |
1. T = T*F + F
2. T = F(*F)^*
3. *F를 T' 로 대치한다.
4. T → FT'
T' → *FT' | ε
예시) S → aA | abA
1. S → a(A | bA)
2. S → aS'
3. S' → A | bA