Tokenizer, Lexer, Parser

chanyoun·2023년 1월 25일
0

컴파일러

  • 컴파일러란 고급언어로 작성된 프로그램을 번역해 기계어로된 프로그램을 만들어 주는 역활을 한다.

  • 이때 구문분석 -> 최적화 -> 코드생성 -> 링킹의 과정을 거치는데, 구문분석 과정에서 소스코드는 Tokenizer, Lexer, Parser를 차례로 거친다. 이포스팅에선 구문분석에 대해 알아 보겠다.

Tokenizer, Lexer

  • Tokenizer란 어떤 구문에서 의미있는 요소들을 의미있는 단위의 토큰으로 쪼개는 역활을 한며 Lexer토큰의 의미를 분석하는 역활을 한다 이두역활을 합쳐 Lexical Analyze라 한다.

  • 예를들어 ex) Age is no guarantee of maturity 라는 문장에서 'A','g','e'을 따로 보면 어떠한 의미도없지만 Age라는 하나의 조각을 보면 의미를 갖게된다.

    이렇게 의미가 있는 토큰 단위로 그 데이터를 Parser에게 넘겨주게 된다.

Parser

  • ParserLexical Analyze되어 Tokenizer된 데이터를 구조적으로 나타낸다.

  • 이때 Parser에 의해 도출된 결과를 AST(Abstract Syntax Tree)라 한다.

  • AST는 위와 같은 구조로 존재하며, Lexical Analyze된 데이터를 Parser를 통해 컴퓨터가 쉽게 이해할수 있는 구조로 나타낸것이며, 구문 분석 단계의 결과이다.

Reference

profile
기록은 힘들어

0개의 댓글