[Compiler] 2. Lexical Analyzer Overview

이상윤·2024년 4월 24일

컴파일러

목록 보기
2/7

Lexical Analyzer가 하는 일

  1. 소스 프로그램의 입력 캐릭터를 읽는다.
  2. lexeme라고 불리는, 의미있는 문자열로 입력 문자를 그룹화한다.
  3. 토큰의 시퀀스를 생성한다.
  4. symbol table에 토큰의 정보를 저장한다.
  5. 토큰들을 syntax analyzer로 전송한다.

Token

  • Token은 말하자면, 문법적인 카테고리이다.
    e.g. 자연어: 동사, 형용사, 명사 / 프로그래밍언어: 식별자, 숫자, 연산자 등
  • Token은 그 이름과 (선택적으로) 그 값을 나타낸 쌍으로 구성된다.
  • 종류
    • Keyword: IF(if), ELSE(else), FLOAT(float) 등
    • Operator: ADD(+), COMPARISON(>,<,==,&& 등) 등
    • Identifier: ID(모든 종류의 식별자)
    • Constant: NUMBER(모든 종류의 숫자 상수), INTEGER, REAL, LITERAL
    • Punctuation symbol: LPAREN( ( ), Comma(,)
    • Whitespace: 공백, 줄바꿈, 탭 등의 공집합이 아닌 문자열 (보통 무시함)

Lexeme

  • Token의 패턴(즉 토큰이 정의하는 규칙의 집합)에 일치하는 문자열이다.
    e.g. Token: IDENTIFIER / Lexeme: pi, score, i, j, var1 등

0개의 댓글