프로그램과 코드, 파싱, 토큰, 그리고 컴파일러
프로그램이란 사람이 작성하는 하나의 텍스트 파일이라고 볼 수 있다.
프로그램은 컴퓨터에게 무엇을 해야 할지 알려주는(명령하는) 역할을 한다.
코드란 위에서 언급한 프로그램에서 작성하는 텍스트라고도 볼 수 있다.
그럼 이 프로그램을 써내려가는 사람을 우리는 뭐라고 불러왔을까? 프로그래머 혹은 코더라고 한다.
프로그램의 한 줄 한 줄은 분석(Parsed)되어 기계(Machine)에 대한 의미를 결정한다. 이 말은 즉, 우리가 써내려가는 코드 따위의 내용들이 token이라는 단위로 분할하여 수행된다는 뜻이다. 비전공자 입장에서는 말이 참 어려운데, 조금만 뜯어서 짚고 넘어가자.
토큰이란 언어의 기본 단어를 얘기한다. 기 언급된 바와 같이 우리가 작성하는 프로그램은 이 토큰이라는 단위로 이루어진다. 참고로 공백 문자는 문자열 내에서 사용된 케이스가 아니라면, 별다른 의미를 지니지 않는다.
아직 "hello world" 한 번 쳐보지 않았더라도 예시 구문을 보고 겉핥기라도 해보자.
const a = 4
위 명령문을 토큰이라는 단위로 쪼개면 어떻게 나눌 수 있을까? 힌트: 총 4개의 토큰이 있다.
정답은 (const, a, =, 4) 이 4가지가 모두 토큰이라고 볼 수 있다.
프로그래밍에서 언어는 이런 구문을 정의하는 역할을 한다. 현존하는 수많은 언어중 이번 매거진에서 다룰 언어는 JavaScript(자바스크립트)다.
JavaScript 구문을 사용하여 컴파일러는 위 토큰의 의미를 결정하기 위해 일련의 규칙을 할당한다.
그러고 나면, 컴파일러는 JavaScript 구문을 사용하여 위의 토큰의 의미를 결정하는 일련의 규칙을 할당하게 된다는 것을 일단 기억하자.
*컴파일러란?
컴파일러는 프로그래밍 언어로 작성된 코드를 컴퓨터가 이해하고 명령을 수행할 수 있는 기계어로 변환해주는 역할을 한다. 우리가 명령한 것(코드)들을 컴퓨터에게 다시 전달해주는 통역사라고 생각해도 좋다.
const a = 4
위 구문에서, const라는 키워드를 통해 a라는 변수를 선언하는 것으로 인식하고 =를 할당 연산자로 인식한다. 마지막으로 변수 a 안에 저장할 값을 4로 결정한다.
컴파일러는 프로그램의 각 구문을 읽고 분석한다. 결국 프로그램을 표현하기 위해 트리와 같은 데이터 구조를 형성하게 된다. 이 데이터 구조안에서 컴퓨터가 명령을 실행할 수 있는 일련의 기계어로 만들어 주는 것이다.