D [0-9] L [a-zA-Z_] H [a-fA-F0-9] E [Ee][+-]?{D}+ FS (f|F|l|L) IS (u|U|l|L)* %{ #include <stdio.h> #include "iparse.tab.h" char copydat_buf[16000]; void copydata(); %} %% "/*" { comment(); } "int" { return (INT); } "float" { return (FLOAT); } "void" { return (VOID); } "string" { return (STRING); } "INTERFACE" { return (INTERFACE_KEYWORD);} "BUILDER" { strcpy(yylval.sval,yytext); return(ALLOW_TYPE); } "WIZARD" { strcpy(yylval.sval,yytext); return(ALLOW_TYPE); } {L}({L}|{D})* { strcpy( yylval.sval, yytext ); return(check_type()); } \n\{\n { copydata(); return(COPYDATA); } "," { return(','); } "|" { return('|'); } [ \t\v\n\f] { } . { /* ignore bad characters */ } %% yywrap() { return(1); } comment() { char c, c1; loop: while ((c = input()) != '*' && c != 0) putchar(c); if ((c1 = input()) != '/' && c != 0) { unput(c1); goto loop; } if (c != 0) putchar(c1); } void copydata() { } int check_type() { /* * * if (yytext == type_name) * return(CLASSNAME); * * return(IDENTIFIER); */ return(IDENTIFIER); }