serversim
학습시뮬레이터템플릿가격
…
…
메뉴 열기
학습↗시뮬레이터↗템플릿↗가격↗
내 Documents문서
전체 목차/1장/1.22 / 40

1.2 · 언어와 번역

컴파일러는 어떻게 코드를 번역할까?

컴파일러는 긴 소스 코드를 어디서부터 읽을까요?

컴파일러도 마법사가 아니라 입력을 읽고 다른 출력을 만드는 평범한 프로그램입니다.

먼저 생활 비유

문장을 문법 나무로 바꾸기

“철수가 사과를 먹었다”를 주어·목적어·동사로 나누듯, 컴파일러도 코드를 토큰으로 자르고 관계를 나무로 만듭니다.

컴퓨터 예제로 바꾸기

가격과 세금 더하기

total = price + tax;

total, =, price, +, tax를 구분한 뒤 “price와 tax를 더해 total에 대입”이라는 구조를 만듭니다.

직접 움직여 보기1 / 5

지금 일어나는 변화

소스 코드

사람이 작성한 문자들이 입력됩니다.

번역 파이프라인소스 코드단계 1토큰단계 2구문 트리단계 3중간 코드단계 4기계 코드단계 5소스 한 줄현재: 소스 코드

이 그림에서 기억할 한 문장

컴파일은 한 번의 번역이 아니라 자르기, 구조 확인, 중간 표현, 코드 생성의 파이프라인입니다.

현재 상태

이동하는 것
소스 한 줄
현재 위치
소스 코드
다음 위치
토큰

30초 확인 문제

괄호에 따라 덧셈 순서가 달라지는 정보는 어디에 잘 드러날까요?

처음 보는 용어 두 개

토큰
컴파일러가 구분한 최소 의미 단위
구문 트리(AST)
코드의 문법 관계를 나무 모양으로 표현한 것

이 절을 다 읽었다면

컴파일은 한 번의 번역이 아니라 자르기, 구조 확인, 중간 표현, 코드 생성의 파이프라인입니다.

← 이전 절

1.1 프로그래밍 언어를 직접 발명해 본다면?

다음 절 →

1.3 링커는 흩어진 코드를 어떻게 하나로 합칠까?