Skip to content

day 02: LEXING(2) - REPL

(아직 parser가 없어서 해당 명령을 실행하지는 못 합니다.)

스크린샷 2021-09-05 오후 1.15.46

REPL은 Read, Eval, Print, Loop의 약어입니다.

오늘 작업한 내용

  • Lexer
  • 한 글자 짜리 operator(예를 들어, =, -, + 등)를 추가했고, 두 글자 짜리 operator(!=, == 등)을 추가했습니다.
  • 여러 글자 짜리 operator를 식별할 때는 peekChar()라는 함수를 사용해서, 다음 한글자를 계속 확인하면서 반복해서 character를 읽는 방식입니다.
  • 토큰을 만들 때는 lexer가 한글자를 읽어보고 특수문자이면 해당 operator로 연결을 하고, 특수문자가 아니면 여러 글자를 읽어서 글자 처리를 합니다. keywords map에 들어있는 문자열이면 keyword로 처리되고, 없으면 식별자로 처리됩니다.

  • REPR

  • REPR은 토큰 하나씩을 가져와서 프린트하는 구조로 되어 있습니다.
  • parser가 추가되면 AST(Abstract Syntax Tree)로 전달해서 실행할 예정입니다.
  • AST가 추상구문트리인 이유는 SEMICOLON, 괄호 등을 제거하고 실질적으로 동작에 필요한 것들만 추상화 해서 넣을 수 있기 때문입니다.

렉싱 끝

다음 : 파서(Parser)