첫걸음
3분 동안 코드마을 구경하기
코드를 몰라도 괜찮아.
한줄이와 함께 코드마을 관문 세 곳을 둘러보자. 관문마다 서로 다른 코드 손님이 찾아올 거야.
관문을 한 번씩 눌러 봐. 그림은 이야기이고, 기록 카드는 실제 토파즈 컴파일러가 남긴 거야.
한줄이
나는 한줄이. 오늘은 내가 길을 안내할게!
톡톡의 관문
첫 번째 손님 1 + 2
톡톡
들어오기 전에 살짝 잘라 볼게.
톡톡에게 맡기기
- 1
- +
- 2
빈칸은 따로 챙기지 않고 조각 셋이 남았어.
이렇게 나뉜 조각을 토큰이라고 해.
가지의 관문
이번에는 다른 손님이야. 1 + * 2
한줄이
이번에는 기호가 하나 더 있네?
가지
톡톡이가 조각 넷을 건네줬어.
이번에는 규칙대로 묶어 볼게.
나무에 매달기
여기서 멈췄어.
쉬운 풀이더하기 기호 뒤에 값이 와야 하는데 곱하기 기호가 먼저 나왔어.
TPZ2001
expected an expression
가리킨 자리 다섯 번째 칸의 *
토큰을 문법 규칙에 맞게 묶어 코드의 구조를 알아내는 일을 구문 분석이라고 해.
이 손님은 여기서 멈췄어. 우리는 다음 손님을 만나러 가자.
타미의 관문
세 번째 손님 1 + "사과"
이 손님은 앞에서 두 가지를 확인받았어.
손님 카드의 확인표
- 조각 확인
- 나무 완성
한줄이
나무는 잘 만들어졌잖아. 또 볼 게 있어?
타미
이번에는 값마다 어떤 종류인지 확인할게.
타미에게 보여 주기
이번에는 나무가 만들어졌는데도 검사가 멈췄어.
쉬운 풀이왼쪽은 정수 int이고 오른쪽은 문자열 string이야. 토파즈의 +는 이 정수와 문자열을 그대로 함께 받을 수 없어.
TPZ5001
`+` needs matching int, float, string, BigInt, or Decimal operands, found `int` and `string`
가리킨 자리 첫 번째부터 여덟 번째 칸까지, 식 전체
값의 종류를 타입이라고 해. 연산이 그 타입들을 받을 수 있는지 확인하는 일을 타입 검사라고 해.
여기까지 걸어왔어
중간에 멈춘 손님도 있었지만, 세 관문을 모두 지나는 코드도 있어.
1 + 2
이 코드는 조각으로 나뉘고, 나무가 완성되고, 타입 검사도 통과했어.
여행 확인표
- 조각 만들기
- 나무 완성
- 타입 통과
오늘 본 세 관문은 토파즈 컴파일러가 코드를 읽고 확인하는 여러 과정 가운데 세 가지야. 실제로는 그 사이와 뒤에도 하는 일이 더 있어.
길 저편에서는 모모와 뚝딱이가 기다리고 있네.
이제 어디로 갈까?
처음부터 차근차근
한줄이의 첫 출근부터 한 편씩 천천히 읽어 보자.
제1화 한줄이의 첫 출근직접 만져 보고 싶다면
궁금한 실험으로 바로 가도 좋아.