TypeScriptSTUDY _ 6장 . 타입스크립트 컴파일 [ 6.3 타입스크립트 컴파일러의 구조 ]

zeroha·2024년 12월 16일
0

TypeScriptStudy

목록 보기
19/32
post-thumbnail

6.3 타입스크립트 컴파일러의 구조

컴파일러는 하나의 프로그램으로 이를 구현한 소스 파일이 존재

스캐너 / 파서 / 바인더 / 체커 / 이미터
.
.
.

1. 프로그램 Program

  • TS 컴파일러
    : tsc 명령어로 실행
    : tsconfig.json에 명시된 컴파일 옵션을 기반으로 컴파일 수행

  • 먼저 전체적인 컴파일 과정을 관리하는 프로그램( 인스턴스 )가 생성됨.

  • 컴파일할 TS 소스파일과 소스 파일 내 import된 파일을 불러오는데, 가장 최초로 불러온 파일 기준으로 컴파일 과정 시작됨.


2. 스캐너 Scanner

: TS 소스 파일을 어휘적으로 분석하여 토큰을 생성하는 역할
( = 소스 코드를 작은 단위로 나누어 의미 있는 토큰으로 변환하는 작업을 수행 )


3. 파서 Parser

: 스캐너가 소스 파일을 토큰으로 나눠주면 파서는 그 토큰 정보를 이용하여 AST를 생성.
AST의 최상위 노드는 TS 소스파일, 최하위 노드는 파일의 끝 지점으로 구성.

: 이렇게 생성된 토큰 목록을 사용하여 구문적 분석을 수행.
-> 이를 통해 코드의 실질적인 구조를 노드 단위 트리 형태로 표현.
( 각각의 노드는 코드상의 위치, 구문 종류, 코드 내용과 같은 정보를 담음. )

  • ()에 해당하는 토큰이 있을 때 파서가 AST를 생성하는 과정에서 이 토큰이 실질적으로 함수의 호출인지, 함주의 인자인지 또는 그룹 연산자인지가 결정됨.

4. 바인더 Binder

: 체커 단계에서 타입 검사를 할 수 있도록 기반을 마련하는 것.
: 타입 검사를 위해 '심볼'symbol이라는 데이터 구조 생성.

-> 심볼 : 이전 단계의 AST에서 선언된 타입의 노드 정보를 저장.


5. 체커Checker와 이미터Emitter

  • 체커 : AST의 노드를 탐색하면서 심볼 정보를 불러와 주어진 소스 파일에 대해 타입 검사를 진행.
    -> 체커의 타입 검사는 다음 컴파일 단계인 이미터에서 실행.

  • 이미터 : TS 소스 파일을 변환하는 역할.
    -> TS 파일 소스를 JS파일과 d.ts(타입 선언)파일로 생성

  • emitter.ts 소스 파일 내부의 emitFiles()함수를 사용 -> TS 소스 변환을 진행.


도서참조 : 우아한 타입스크립트 with 리액트
profile
하 영

0개의 댓글

관련 채용 정보