[학습정리]Tokenizer..?

김정현·2024년 7월 18일

컴파일러 이론의 Parser

  • 파서는 컴파일러의 핵심 구성요소
  • 프로그램의 문법적 구조를 분석하고 이해하는데 필수적
  • 여기서의 파서의 역할은 토크나이저렉서에 의해서 분리되어 분석된 토큰을 입력받아 구문 트리를 생성한다.

    구문 트리는 프로그래밍 언어로 작성된 소스 코드의 구문 구조를 트리 형태로 나타낸것이며, AST(추상 구문 트리)라고도 불린다.

  • 이러한 일련의 과정을 거쳐 프로그램의 소스 코드컴퓨터이해할 수 있는 형태로 변환

Tokneizer

  • 토크나이저는 입력된 텍스트를 모델에서 처리할 수 있는 데이터로 변환한다는 한가지 목적을 가지고 있다
  • 입력된 텍스트를 토큰이라는 단위로 분리하는 토큰화(Tokenization) 진행
    토큰이란 텍스트를 의미 있는 단위로 분리한 최소단위

    "I hate you" -> 토큰으로 분리 -> "I", "hate", "you"라는 식으로 분리가 된다고 볼 수 있다.

그럼 토크나이저를 통해 분리된 토큰들의 의미는 어떻게 분석할까?

Lexer

  • 토크나이저를 통해 생성된 토큰들의 의미를 분석하는 역할
  • 토큰타입속성을 분석한다

    해당 토큰이 알파벳으로 이루어진 문자인지 아니면 숫자로 이루어졌는지 아니면 연산자인지를 분류한다.

  • 이런식으로 분석된 토큰의 정보(토큰 타입, 속성) 출력한다.

Parser

  • 토크나이저렉서를 통해 분석된 토큰들의 구문적 구조를 파악하고 분석하여 구문트리를 생성한다.
  • AST(추상구문트리)란 특정 프로그래밍 언어로 작성된 프로그램 소스를 각각 의미로 분리한 컴퓨터가 이해할 수 있는 구조로 변경시킨 트리라고 말할 수 있다.

이렇게 일련의 과정을 거친 후 결과로 나온 AST를 가지고 Compiler가 다음 최적화 작업을 수행한다.

profile
안녕하세요 반갑습니다

0개의 댓글