%{ #include #include #include #include "y.tab.h" int install_id(char *); char symtab[200][256]; int symind = 0; int lino = 1; %} ALPHA [a-zA-Z] NUM [0-9] INTEGER [-+]?{NUM}+ FLT {INTEGER}?\.{NUM}+ EXP ({INTEGER}|{FLT})[eE][-+]?{NUM}{NUM}? ID {ALPHA}({ALPHA}|{NUM}|_)* COMMENT ("//".*"\n")|("/*"[^"*/"]*.?"*/") WSPACE [ \t]+ %% "\n" { lino++; } "int" { return INT; } "float" { return FLOAT; } "void" { return VOID; } {EXP} { printf("EXP: %s\n\n",yytext); yylval.str = (char *) malloc ( yyleng + 1 ); strcpy ( yylval.str, yytext ); return EXP; } {FLT} { yylval.str = (char *) malloc ( yyleng + 1 ); strcpy ( yylval.str, yytext ); printf("FLOAT: %s\n\n",yylval.str); return FLT; } {INTEGER} { printf("INT: %d\n\n",atoi(yytext)); yylval.yint = atoi ( yytext ); return INTEGER; } {ID} { yylval.yint = install_id( yytext ); printf("ID: %d\t%s\n\n",yylval.yint,yytext); return ID; } [-+*/=(){}<>.;] { return *yytext; } {WSPACE}|{COMMENT} ; %% int yywrap(void) { return 1; } int install_id( char *s ) { int i; for ( i=0; i= 200 ) { printf(" FULL \n\n "); return -1; } strcpy ( symtab[symind] , s ); symind++; return symind-1; }