Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 4

Quit

%{
#define ADDOP '+'
#define SUBOP '-'
#define MULOP '*'
#define DIVOP '/'
#define LPAREN '('
#define RPAREN ')'
#define ASGNOP '='
#define DOT '.'
#define LBRACE '{'
#define RBRACE '}'

#define ID 257
#define INT 258
#define EOLN 259
#define BAD 260
#define REPEAT 261
#define END 262
#define PREINC 263

%}

%%

"+++" {unput('+');
unput('+');
return(ADDOP);}

"+" return(ADDOP);

"++" return(PREINC);

"-" return(SUBOP);
"*" return(MULOP);

"/" return(DIVOP);

"(" return(LPAREN);

")" return(RPAREN);

"{" return(LBRACE);

"}" return(RBRACE);

"=" return(ASGNOP);

"." return(DOT);

'\n' return(EOLN);

[0-9][0-9]* return(INT);

[A-Za-z][0-9A-Za-z]* return(ID);

"" |
"\t" ;

[^ \{\}\.\t\n\+\-\*\/\(\)\=]* return(BAD);
%%
int yywrap(){
return(1);
}
int main(){
int tok;
while ((tok = yylex()) != EOF){
printf("token number is \t %d, \t %s\n", tok, yytext);
}
printf("\n Program Done\n");
}

% lex preinc_calc.l
% make lex.yy
cc lex.yy.c -o lex.yy
% lex.yy
3+2
token number is 258, 3
token number is 43, +
token number is 258, 2

f=++b
token number is 257, f
token number is 61, =
token number is 263, ++
token number is 257, b

f=23+++d
token number is 257, f
token number is 61, =
token number is 258, 23
token number is 43, +++
token number is 263, ++
token number is 257, d
g=g+++e
token number is 257, g
token number is 61, =
token number is 257, g
token number is 43, +++
token number is 263, ++
token number is 257, e

You might also like