PoiNtEr->: lex program

                             Difference between a dream and an aim. A dream requires soundless sleep, whereas an aim requires sleepless efforts.

Search This Blog

Saturday, December 25, 2010

lex program

The following is an example of a lex program that implements a rudimentary scanner for a Pascal-like syntax:


/* Need this for the call to atof() below. */

#include <math.h>

/* Need this for printf(), fopen(), and stdin below. */

#include <stdio.h>


DIGIT [0-9]

ID [a-z][a-z0-9]*


{DIGIT}+ {

printf("An integer: %s (%d)\n", yytext,



{DIGIT}+"."{DIGIT}* {

printf("A float: %s (%g)\n", 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);

"{"[^}\n]*"}" /* Eat up one-line comments. */

[ \t\n]+ /* Eat up white space. */

. printf("Unrecognized character: %s\n", yytext);


int main(int argc, char *argv[])


++argv, --argc; /* Skip over program name. */

if (argc > 0)

yyin = fopen(argv[0], "r");


yyin = stdin;



/*command required to run program on linux is "lex <filename.l>" ,where ".l" is extension of lex file.you can also google flex and download it to run above.*/

/*after running above program you will get a "lex.yy.c" if you are using flex. */

No comments:

Post a Comment