lex

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS

lex란?

lex는 lexical analyzer 또는 lexer를 만드는 데 사용하는 도구이다. lexer는 임의의 입력 스트림을 토큰으로 만든다.

lex specification

일반적인 filename.l 등의 렉스 파일 구성
{{|
%{
/* definition section for c */
%}
/* definition section for lex */
%% /* end of definition section */

/* rules section */

%% /* end of rules section */

/* user subroutine section */
|}}

일반적인 실행 순서

lex filename.l gcc -o filename lex.yy.c -ll
filename.l ________________> lex.yy.c _____________________________> filename


변종

AT&T lex
flex
MKS lex
Abraxas lex
POSIX lex

특이점

AnswerMe) 기본적으로 filename.l에서 main() { }를 작성하지 않아도 기본적으로 넣어줍니다. lex.yy.c 소스를 보면 #if YY_MAIN 이런식으로 되어 있는데, YY_MAIN flag를 gcc등의 컴파일러에서 넣어주는 건가요? 즉 어떻게 main함수가 없는 것을 아는지 궁금하네요.


"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>