본문 바로가기
컴파일러

[컴파일러] 06. 어휘 분석 - LEX

by 유일리 2023. 4. 12.
  • LEX

- 입력 스트림에서 정규표현으로 기술된 토큰들을 찾는 프로그램 작성에 도움을 주는 SW

- chomsky가 고안한 hierarchy 중 type 3Regular Grammar를 사용하고 이를 이용해 만든 언어를 Regular Language라고 함

  • Lex source

<definition 정의부분>

%%

<rules 규칙부분>

%%

<user subroutines 사용자 부프로그램 부분>

<definition 정의부분>

dcl part : %{ ... %}

macro definitions : name translation

 

<rules 규칙부분>

regular expressions + actions

 

<user subroutines 사용자 부 프로그램 부분>

c 부프로그램들로 그대로 lex.yy.c에 복사된다.

 

  • Lex regular expressions (렉스의 정규표현)

Text characters : 입력 스트림에서 실제 매칭되는 부분

Operator characters : 토큰의 구조를 쉽게 표현할 수 있도록 Lex가 제공하는 연산자 문자

  • Lex actions

토큰이 인식되었을 때 실행해야 할 행동을 C언어로 기술하는 부분

yytext : 렉스 정규표현과 매칭된 문자열

yyleng : 매칭된 문자열의 길이

ECHO : 매칭된 문자열을 프린트하라는 함수

yymore() : 현재 매칭된 문자열 끝에 다음 인식될 문자열이 덧붙여지도록 하는 함수

yyless(n) : n개의 character만을 yytext에 남겨두고 나머지는 다시 처리하기 위하여 입력 스트림으로 되돌려보내는 함수

yywrap() : 입력 스트림의 끝을 만났을 때 호출되는 함수

yylex()의 리턴값은 매칭된 토큰 번호

 

댓글