// 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개
첨부파일첨부된 파일이 5개 있습니다.
다음검색