CAFE

실습 자료실

실습 6. Lex 소개 및 실습

작성자nlp|작성시간13.09.25|조회수6,785 목록 댓글 0

첨부파일 컴파일러 4장 Lex - Yacc.pdf



1. Lex 실습 -- Linux 또는 cygwin(윈도, cygwin의 home 폴더에서 실습)


// Lex 입력 예제 -- <주의사항> 규칙부의 '정규표현'과 '액션코드' 사이는 "탭 문자"

%{

#include <stdio.h>

%}

DIGIT   [0-9]

LETTER  [A-Za-z]

%%
"hello world"    printf("GOOD BYE\n");

[0-9]+   { printf("INTEGER\n"); }

{LETTER}+   { printf("ALPHABET STRING\n"); }

{LETTER}+({LETTER}|{DIGIT})*   { printf("IDENTIFIER\n"); }
.   ;
%%

int yywrap() { return 1; }


int main() {

yylex();

return 0;

}


2. Linux 또는 cygwin(윈도) 환경에서 flex를 사용하여 실습 


첨부파일 test1.l --> a*b, b*a 등의 정규표현을 인식하는 언어에 대한 어휘분석기


첨부파일 test2.l --> 정수/실수, int/char/float 등을 인식하는 어휘분석기


첨부파일 test3.l --> lex에서 return값을 정수(token number)로 반환하는 예제


<주의> cygwin 설치할 때 --- flex, bison, gcc-core를 꼭 설치해야 함!


1) "flex"를 사용하여 lex 입력에 대해 lex.yy.c 생성

   $ flex test1.l

 
2) yy.lex.c를 컴파일하여 실행파일 생성
   $ gcc lex.yy.c -lfl
   <참고> gcc 컴파일 에러 발생할 때 --- "-lfl"을 삭제하고 컴파일!!
 
3) 실행 -- lex 입력파일에 기술된 token 입력
   $ ./a.exe

3. lex 예제 파일들 -- 11개


다음검색
현재 게시글 추가 기능 열기
  • 북마크
  • 신고 센터로 신고

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼