Computer Science/컴파일러개론(Compiler)

[컴개/CI] 어휘 분석(Lexical Analysis)

gxxgsta 2023. 10. 19. 15:04
반응형
SMALL

컴파일 과정

컴파일러는 소스코드를 입력으로 받으면 전처리기를 통해

소스코드를 전처리(#include, #defines, #ifdef 등을 처리)하고

해당 결과물로 어휘, 구문, 의미 분석 과정을 거쳐 추상구문트리(AST)를 만든다.

이 과정에서 어휘 분석이라는 과정을 거치는데, 어휘 분석이 무엇인지 알아보자.

 

어휘 분석(Lexical Analysis)

어휘 분석이란 원시 프로그램(소스 코드)을 긴 문자열로 보고

차례대로 문자를 검사하여 의미 있는 최소 단위들로 변환하는 것이다.

space와 같은 공백을 제거하여 코드의 크기도 줄일 수 있다.

 

이때, 의미 있는 최소 단위를 토근(token)이라고 하는데

이 토큰은 문법적으로 의미있는 최소 단위이다.

토큰의 종류는 아래와 같다.

  • 식별자: x, y와 같은 변수
  • 키워드: if, else, while, for, break와 같은 키워드
  • 상수: 2, 100, -10, 5.0과 같은 숫자
  • 연산자: +, -, *, ++, > 등과 같은 연산자
  • 문자열: "x", "Hello World"와 같은 문자열

이때, 식별자, 상수는 다른 토큰과 성격이 다르며 다른 처리가 필요하다.

 

참고로 자바의 StringTokenizer를 살펴보겠다.

import java.util.StringTokenizer;
public class Main {
	public static void main(String[] args) {
    	String str = "this is my string";
        StringTokenizer st = new StringTokenizer(str);
        System.out.println(st.countTokens());
        while(st.hasMoreTokens()) {
        	System.out.println(st.nextToken());
        }
        System.out.println(st.countTokens());
    }
}

// ----output----
// 4
// this
// is
// my
// string
// 0
반응형
LIST

'Computer Science > 컴파일러개론(Compiler)' 카테고리의 다른 글

[컴개/CI] 모호성(Ambiguity)  (0) 2023.10.20
[컴개/CI] 구문 분석  (0) 2023.10.20
[컴개/CI] 어휘 분석기 만들기  (1) 2023.10.19
[컴개/CI] Token  (1) 2023.10.19
[컴개/CI] 컴파일러  (1) 2023.10.19