14 - Derivation Tree (Parse Tree)

2021. 7. 26. 22:04개발 관련 학습정리/컴파일러 만들기 (이론)

반응형

유도 과정을 통해 유도 트리를 만들어보자

먼저 유도 트리를 만들기 위해서는 유도에 관한 개념을 알아야한다.

 

Define Derivation


(a + a)에서 nonterminal E는 E -> E + E | E * E | (E) | a가 될 수 있다.

따라서 E 에서 (a + a)로 도출되려면 E -> (E) -> (E +E) -> (a + E) -> (a + a)가 된다.

위는 leftmost 유도할 경우이고, rightmost에서는 반대로 E -> (E) -> (E +E) -> (E + a) -> (a + a) 가 된다.

 

이제 a + a * a를 윧ㅎ해보자.

leftmost일 경우 E -> ( E ) -> E + E -> E + E * E 로, 맨 왼쪽 E부터 a로 바뀐다.

그렇게 되면 연산이 덧셈부터 시작하게 된다.

그래서 rightmost로 할 경우 트리가 * 표시가 더 위에 있어 * 먼저 연산하게 된다.

이렇게 한 문장으로 여러개의 의미를 가질 수 있는걸 모호성이라고 하고, 이걸 해결하기 위하여 

더 여러가지 방법들을 알아야한다. 

반응형

'개발 관련 학습정리 > 컴파일러 만들기 (이론)' 카테고리의 다른 글

16 - Context-Free Grammar (CFG)  (0) 2021.07.28
15 - Grammar Translation  (0) 2021.07.27
13 - Lexical analysis  (0) 2021.07.21
12 - Lexical Tokens  (0) 2021.07.20
11 - Automata <-> Regular Expression  (0) 2021.07.19