- LEX
- 입력 스트림에서 정규표현으로 기술된 토큰들을 찾는 프로그램 작성에 도움을 주는 SW
- chomsky가 고안한 hierarchy 중 type 3인 Regular 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()의 리턴값은 매칭된 토큰 번호
'컴파일러' 카테고리의 다른 글
[컴파일러] 05. 어휘 분석 (Lexical Analysis) (0) | 2023.04.10 |
---|---|
[컴파일러] 04. Symbol Table (0) | 2023.04.10 |
[컴파일러] 03. 정규 언어 (Regular Language) (0) | 2023.04.08 |
[컴파일러] 02. 형식언어_문법의 분류 (0) | 2023.04.06 |
[컴파일러] 01. 컴파일러개론 (0) | 2023.04.06 |
댓글