컴파일러
추상 구문 트리(AST)의 특징으로 올바른 것은?
- A소스 코드의 괄호나 구분 기호까지 모두 노드로 남겨 둔다
- B의미와 관계없는 기호를 생략하고 연산자의 우선순위를 트리 형태로 나타낸다
- CCPU의 명령과 1대1로 대응하며 그대로 실행할 수 있다
정답과 해설 보기
정답: B. 의미와 관계없는 기호를 생략하고 연산자의 우선순위를 트리 형태로 나타낸다
구문 분석에서는 문법 규칙대로 괄호나 구분 기호까지 포함한 트리(구체 구문 트리)가 만들어지지만, 이후의 처리에는 불필요한 정보가 많이 들어 있습니다. 추상 구문 트리는 프로그램의 의미에 필요한 연산과 문장만을 노드로 한 트리로, 예를 들어 (a + b) * c에서는 곱셈 노드 아래에 덧셈 노드가 오므로 괄호가 없어도 계산 순서를 알 수 있습니다. CPU의 명령에 대응하는 것은 더 뒤의 단계에서 생성하는 코드입니다.
- A. 괄호까지 남기는 것은 구체 구문 트리 쪽입니다.
- B. 올바릅니다. 불필요한 기호를 생략하고 우선순위를 트리 형태로 나타냅니다.
- C. CPU의 명령에 대응하는 것은 뒤 단계의 코드입니다.