마이 플밍 블로그

컴파일러 - 어휘 분석 (Lexical analysis) 본문

컴퓨터

컴파일러 - 어휘 분석 (Lexical analysis)

레옹 2021. 11. 17. 18:28

개요

컴파일의 단계를 정리면 다음과 같다.

어휘분석(스캐닝) - 구문분석(파싱) - 의미 분석(타입검사) - 중간코드생성기- 최적화 - 코드생성 - 종속코드 최적화

 

와 같은 순서로 진행된다.

이중 첫 번째 단계인 어휘 분석은 소스코드를 정규문법에 따라 토큰으로 분류하는 작업을 말한다.

어휘 분석 단계에서 검출되는 의미있는 조각을 어휘항목(lexeme)라고 하며, 어휘 분석기는 소스코드에서 이러한 어휘 항목을 검출하여 토큰을 생성한다.

 

"Think like a man of action and act like man of thought"

이런 문장을 뛰어쓰기나 공백을 통해서 단어별로 자르면 잘려진 단어가 Token이 되는 형식이다

이 Token을 뽑는게 어휘분석이다.

 

용어

어휘항목 (lexeme): 소스코드에 존재하는 의미있는 문자열, 식별자, 숫자, 키워드등

패턴 (pattern):토큰이 어휘항목을 서술하는 규칙으로써, 정규문법에 따라 표현됨

토큰 (token):의미있는 문법적 단위로써 일반적으로 식별자(identifier), 상수(constant), 예약어(reserved word), 연산자(operator), 구분자(delimiter) 등이 사용됨. 토큰의 종류와 형태는 프로그래밍 언어 설계자나 컴파일러 설계자에 의해 결정됨

 

이렇게 Token들을 분류하면 하나의 심볼 테이블로 정의되어서 구문 분석기(Syntax Analysis)의 Parser가 사용하게 된다.

 

어휘 오류 검출

어휘 오류는 소스 코드에서 정의되지 않은 어휘 항목이 발견되었을 때 발생하는 오류다.

어휘 분석기가 독립적으로 어휘 오류를 검출하는 것은 많은 비용이 소모된다.

그래서 어휘 분석기가 독립적으로 어휘 오류를 검출하기 보다는 어휘 분석기는 심볼 테이블을 생성하고 어휘 분석의 다음 단계인 구문 분석에서 구문 분석기가 어휘 오류를 검출하는 것이 더욱 일반적이다.

 


출처: https://booolean.tistory.com/474 [Boolean]

[컴파일러] - 어휘 분석 (Lexical analysis) I (tistory.com)

 

'컴퓨터' 카테고리의 다른 글

[컴퓨터]컴파일러(compiler)와 인터프리터(interpreter)  (0) 2023.10.04