반응형
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 |