%{ #include #include "scanType.h" #include "calc.tab.h" static int lineno = 1; int setTokenData(int tokenclass) { TokenData *ans; yylval.tokenData = new TokenData; yylval.tokenData->tokenclass = tokenclass; yylval.tokenData->linenum = lineno; yylval.tokenData->tokenstr = strdup(yytext); if (tokenclass==TRUE) { yylval.tokenData->bvalue = true; } if (tokenclass==FALSE) { yylval.tokenData->bvalue = false; } return tokenclass; } %} %option yylineno %option noyywrap %% [Tt] { return setTokenData(TRUE); } true { return setTokenData(TRUE); } [Ff] { return setTokenData(FALSE); } false { return setTokenData(FALSE); } quit { return QUIT; } // return token class exit { return QUIT; } // return token class stop { return QUIT; } // return token class and { return AND; } [\*] { return AND; } or { return OR; } [\|] { return OR; } [\;\(\)] { return yytext[0]; } \n { lineno++; } . ; %%