어휘 분석

IT 위키

Lexical Analysis; 어휘 분석

컴파일러가 원시 코드를 읽어 의미 있는 최소 단위인 토큰(Token)으로 나누는 첫 번째 단계

이 일을 하는 부분을 어휘 분석기(Lexical Analyzer) 또는 스캐너(Scanner)라고 한다.

컴파일 단계에서의 위치

[편집 | 원본 편집]
단계 하는 일 산출물
어휘 분석 문자열을 토큰으로 분해 토큰 열
구문 분석 토큰이 문법에 맞는지 검사 파스 트리
의미 분석 자료형 검사, 선언 확인 주석이 붙은 트리
중간 코드 생성 기계 독립적인 중간 표현으로 변환 중간 코드
최적화 불필요한 연산 제거 개선된 중간 코드
목적 코드 생성 대상 기계의 코드로 변환 목적 프로그램

자료형 검사는 어휘 분석이 아니라 의미 분석 단계에서 한다. 자주 나오는 함정이다.

하는 일

[편집 | 원본 편집]
  • 공백과 주석을 제거한다.
  • 식별자, 예약어, 상수, 연산자, 구분자를 구분해 토큰으로 만든다.
  • 심볼 테이블에 식별자를 등록한다.
  • 잘못된 문자를 만나면 어휘 오류를 보고한다.

`sum = count + 10;` 은 다음과 같이 분해된다.

식별자(sum) 연산자(=) 식별자(count) 연산자(+) 정수상수(10) 구분자(;)

정규 표현식으로 토큰 패턴을 정의하고, 이를 유한 오토마타로 바꿔 인식한다. lex, flex 같은 도구가 정규식 명세로부터 어휘 분석기를 자동 생성해 준다.

같이 보기

[편집 | 원본 편집]