항상 19시 전에 과제를 제출했지만, (그래봐야 이틀) 오늘(어제)는 진짜 정말 너무 힘들었다. 과제를 처음 받아들었을때도 이해가 되지않았지만, 계속 반복해서 읽으면서 더 이해가 안됐다. ATS... 몰랐는데 컴파일링시 주로 쓰이는 자료구조라고 한다. 우리가 매일 편하게 쓰고있는 것들, 라이브러리나, 알고리즘 등등... 수많은 근본 천재 개발자분들이 만들어두신 편한 길 위에 내가 있구나, 다시금 깨달았다. 그분들의 노고를 조금이나마 이해하고자 정말 열심히 작업했다. 익일 2시가 넘어서야 겨우 과제를 완성할 수 있었지만, 참 보람찼다.
ATS는 tokenizer -> lexer -> parser 순으로 주어진 구문을 분석한다고 한다... 각각의 역할을 간단하게만 알아보면.
- tokenizer : 주어진 코드의 의미있는 요소들을 토큰으로 쪼개는 역할, 여기서 토큰이란, "어휘 분석의 단위" 를 의미하는 컴퓨터 용어이다. 이 단위는 단어나 단어구, 문자열 등 보통 의미있는 단위로 정한다.
- lexer : Tokenizer에 의해 쪼갠 토큰의 의미를 분석하는 역할, Tokenizer + Lexer의 두가지 역할을 합해 Lexcial analyze라고 한다.
- parser : Lexical analyze되어 tokenize 된 데이터를 가지고, 구조적으로 나타낸다.
과제는 당연하게도 위의 지식만으로는 풀리지 않아 엄청난 시행착오를 했다. 여기서 가장 크게 깨달은것 두가지...
하나는, js 문법공부 좀 제대로 다시하자...
두번째는, 안되는거 붙잡고있지말고 산책이라도 하고오자.
오기가 생겨 tokenizer 만드는데 거의 4시간을 박았는데... 너무 답답해서 30분 러닝하고 오니까 정말 딱 보였다... JK님이 말씀하신 뇌 스위칭이 뭔지 대충알것같았다.