Thursday, January 21, 2010

LEX TOOL

%{
#include math.h
#include stdio.h
%}
DIGIT [0-9]
ID [a-z][a-z0-9]*
%%
{DIGIT}+ {printf("An Integer : %(%d) \n",yytext,atoi(yytext));}
{DIGIT}+"."{DIGIT}* {printf("A Float : %s(%g) \n",yytext,atof(yytext));}
if|then|begin|end|procedure|function {printf("A keyword : %s\n",yytext);}
{ID} printf("An identifier:%s \n",yytext);
"+"|"-"|"*"|"/" printf("An Operator:%s \n ",yytext);
%%
int main(int argc,char *argv[])
{
++argv;--argc;/*skip over program name*/
if(argc>0)
yyin=fopen(argv[0],"r");
else
yyin=stdin;
yylex();
}

$ lex lex1.l
$ cc lex.yy.c -ll
$ a.out
if
A keyword : if

thr
An identifier:thr

then
A keyword : then

123
An Integer : %(4203076) CNTR+d

No comments:

Post a Comment

  © For Movies Click Here Softwares by For Games Click Here 2010

Back to TOP