목차
- 컴파일러란?
- 컴파일 과정
- Tokenizer & Lexer
- Parser
컴파일러란?
컴파일러란 고급언어로 작성된 프로그램을 번역해 기계어로된 프로그램을 만들어주는 역할을 한다. 내가 작성한 소스코드는 고급언어이며, 컴파일하여 나온 어셈블리어 파일이나 목적 파일 등이 기계어이다.
컴파일 과정
컴파일 과정은 빌드 과정 중 한 단계이다.
컴파일 과정은 언어나 컴파일러마다 조금씩 차이가 있겠지만, 일반적으로 이런 과정을 거친다.
Tokenizer & Lexer
컴파일러는 구문 분석 -> 최적화 -> 코드생성 -> 링킹의 과정을 거치는데, 구문 분석 과정에서 Tokenizer, Lexer, Parser 를 차례대로 거친다.
Tokenizer란 어떤 구문에서 의미있는 요소들을 의미있는 단위의 토큰으로 쪼개는 역할을 한다.
Lexer는 토큰의 의미를 분석하는 역할을 한다.
이 두 역할을 합쳐 Lexical Analyze라고 한다.
Parser
Parser 는 Lexical Analyze되어 Tokenize 된 데이터를 구조화 한다.
이때 Parser에 의해 도출된 데이터 구조를 AST (Abstract Syntax Tree)라고 한다.
AST 는 위와 같은 트리 구조로 존재하며, Lexical Analyze된 데이터를 Parser를 통해 컴퓨터가 쉽게 이해할 수 있는 구조로 나타낸 것이며, 구문 분석 단계의 결과이다.
Tokenizer -> Lexer -> Parser 예시
참고 자료
LLVM 이란
https://zeddios.tistory.com/1175
토크나이저, 렉서, 파서
https://gobae.tistory.com/94
SIL(Swift Intermeditate Language)
https://techblog.woowahan.com/2564
'부스트캠프 > 챌린지' 카테고리의 다른 글
Static Dispatch & Dynamic Dispatch (0) | 2024.07.22 |
---|---|
네이버 부스트캠프 웹・모바일 9기 챌린지 과정 1주차 회고 (0) | 2024.07.19 |
메모리의 구조 (0) | 2024.07.18 |
M1 맥에 우분투 가상환경 설치하고 swift 설치하기! (0) | 2024.07.16 |
Git 학습하기 (0) | 2024.07.15 |