Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기
    • 부스트캠프
    • iOS
    • visionOS
    • Backend
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • CS
  • MVC
  • ImageResource
  • 소프트웨어 테스트
  • constraint
  • image
  • Optional
  • alamofire
  • AutoLayout
  • 소프트웨어공학
  • swift
  • 부스트캠프
  • 티스토리챌린지
  • ios
  • AVAudioSession
  • Animation
  • Python
  • Git
  • Swift5.7
  • boj
  • Concurrency
  • if let
  • 알고리즘
  • jekyll
  • SwiftUI
  • 오블완
  • guard
  • 백준
  • 소프트웨어 공학
  • 모듈화

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
토크나이저, 렉서, 파서 (Tokenizer, Lexer, Parser)
부스트캠프

토크나이저, 렉서, 파서 (Tokenizer, Lexer, Parser)

2024. 7. 17. 12:07

목차

  • 컴파일러란?
  • 컴파일 과정
  • 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

swift의 빌드과정
https://velog.io/@minjunkim-dev/swift%EC%9D%98-%EB%B9%8C%EB%93%9C-%EA%B3%BC%EC%A0%95%EC%9D%80-%EA%B3%BC%EC%97%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%90%98%EB%8A%94%EA%B1%B8%EA%B9%8C

토크나이저, 렉서, 파서
https://gobae.tistory.com/94

SIL(Swift Intermeditate Language)
https://techblog.woowahan.com/2564

저작자표시 (새창열림)

'부스트캠프' 카테고리의 다른 글

네이버 부스트캠프 웹・모바일 9기 챌린지 과정 1주차 회고  (1) 2024.07.19
메모리의 구조  (0) 2024.07.18
M1 맥에 우분투 가상환경 설치하고 swift 설치하기!  (0) 2024.07.16
Git 학습하기  (0) 2024.07.15
네이버 부스트캠프 9기 베이직 과정 회고  (0) 2024.07.07
    '부스트캠프' 카테고리의 다른 글
    • 네이버 부스트캠프 웹・모바일 9기 챌린지 과정 1주차 회고
    • 메모리의 구조
    • M1 맥에 우분투 가상환경 설치하고 swift 설치하기!
    • Git 학습하기
    Dev.YoungKyu
    Dev.YoungKyu
    iOS를 공부하고 있습니다

    티스토리툴바