이번에는 enum을 이용한 심볼 테이블을 이용한 예제

%{
enum {
        NONE = 0,
        ONE,
        TWO,
        THREE,
        FOUR,
        FIVE,
        SIX,
        SEVEN
};
int number;
void action();
%}
%%
oneone  { number = SEVEN; action(); }
one |
ONE  { number = ONE; action(); }
two |
TWO  { number = TWO; action(); }
three |
THREE  { number = THREE; action(); }
four |
FOUR  { number = FOUR; action(); }
five |
FIVE  { number = FIVE; action(); }
six |
SIX  { number = SIX;  action(); }
[a-zA-Z]+ { number = NONE; action(); }
%%
void action()
{
        if (number != NONE)
                printf("%s is %d\n", yytext, number);
        else
                printf("%s?? I don't learn it.\n", yytext);
}
 
main()
{
        yylex();
}

문자로 one이나 혹은 six까지 입력을 했을때 enum에서 정의한 숫자와 매치해서 미리 정해둔 문장을 출력한다.

'개발관련 > (Fast)Lex' 카테고리의 다른 글

Yacc, Bison으로 인한 문제  (0) 2013.10.25
lex 시작하기  (0) 2013.10.24
시작하기에 앞서...  (0) 2013.10.24
확장자 규칙의 사용  (0) 2013.10.24
lex를 위한 간단한 Makefile  (0) 2013.10.24