컴파일러
식 2 + 3 * 4의 추상 구문 트리의 형태로 올바른 것은?
- A루트는 + 노드이고, 그 오른쪽 자식이 3 * 4를 나타내는 * 노드가 된다
- B루트는 * 노드이고, 그 왼쪽 자식이 2 + 3을 나타내는 + 노드가 된다
- C2, 3, 4, +, * 의 5개 노드가 모두 루트의 직접 자식으로 나란히 놓인다
정답과 해설 보기
정답: A. 루트는 + 노드이고, 그 오른쪽 자식이 3 * 4를 나타내는 * 노드가 된다
곱셈은 덧셈보다 우선순위가 높으므로 이 식은 2 + (3 * 4)로 해석됩니다. 추상 구문 트리에서는 먼저 계산하는 연산일수록 아래에 놓이므로, 루트는 +이고 그 왼쪽 자식이 2, 오른쪽 자식이 3과 4를 자식으로 갖는 * 노드가 됩니다. 트리를 아래에서부터 평가하면 3 * 4 = 12를 먼저 계산하고 2 + 12 = 14를 얻습니다. 루트가 *가 되는 것은 (2 + 3) * 4라고 쓴 경우이며, 모두를 루트의 자식으로 나열하면 계산 순서를 나타낼 수 없습니다.
- A. 올바릅니다. 우선순위가 높은 *가 아래가 되고 루트는 +입니다.
- B. 루트가 *가 되는 것은 (2 + 3) * 4인 경우입니다.
- C. 평평하게 나열하면 계산 순서를 나타낼 수 없습니다.