1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
%{
#include "y.tab.h"
#include "string.h"
#undef yywrap
int yywrap(void) { return(1); }
extern char *mystrdup(char *);
%}
%%
#.*\n ;
^:.*\n ;
[ \t\r\n] ;
[-+*/%.!?:()\[\]] { return(*yytext); }
january { yylval.ival = 1; return(MONTH); }
february { yylval.ival = 2; return(MONTH); }
march { yylval.ival = 3; return(MONTH); }
april { yylval.ival = 4; return(MONTH); }
may { yylval.ival = 5; return(MONTH); }
june { yylval.ival = 6; return(MONTH); }
july { yylval.ival = 7; return(MONTH); }
august { yylval.ival = 8; return(MONTH); }
september { yylval.ival = 9; return(MONTH); }
october { yylval.ival = 10; return(MONTH); }
november { yylval.ival = 11; return(MONTH); }
december { yylval.ival = 12; return(MONTH); }
monday { yylval.ival = 1; return(WDAY); }
tuesday { yylval.ival = 2; return(WDAY); }
wednesday { yylval.ival = 3; return(WDAY); }
thursday { yylval.ival = 4; return(WDAY); }
friday { yylval.ival = 5; return(WDAY); }
saturday { yylval.ival = 6; return(WDAY); }
sunday { yylval.ival = 7; return(WDAY); }
workday { yylval.ival = -1; return(WDAY); }
1st|first { yylval.ival = 1; return(NUMBER); }
2nd|second { yylval.ival = 2; return(NUMBER); }
3rd|third { yylval.ival = 3; return(NUMBER); }
4th|fourth { yylval.ival = 4; return(NUMBER); }
5th|fifth { yylval.ival = 5; return(NUMBER); }
last { yylval.ival = 999; return(NUMBER); }
any { yylval.ival = 0; return(NUMBER); }
before { yylval.ival = -1; return(NUMBER); }
after { yylval.ival = -2; return(NUMBER); }
[0-9]+ { yylval.ival = atoi(yytext); return(NUMBER); }
\"[^"]*\" { yylval.sval = mystrdup(yytext+1);
yylval.sval[strlen(yylval.sval)-1] = 0;
return(STRING); }
every ;
day ;
days ;
on ;
in { return(IN); }
plus { return(PLUS); }
minus { return(MINUS); }
small { return(SMALL); }
year { return(CYEAR); }
leapyear { return(LEAPYEAR); }
easter { return(EASTER); }
pascha { return(PASCHA); }
length { return(LENGTH); }
reset { return(RESET); }
black { yylval.ival = 1; return(COLOR); }
red { yylval.ival = 2; return(COLOR); }
green { yylval.ival = 3; return(COLOR); }
yellow { yylval.ival = 4; return(COLOR); }
blue { yylval.ival = 5; return(COLOR); }
magenta { yylval.ival = 6; return(COLOR); }
cyan { yylval.ival = 7; return(COLOR); }
white { yylval.ival = 8; return(COLOR); }
weekend { yylval.ival = 9; return(COLOR); }
"==" { return(EQ_); }
"!=" { return(NE); }
"<=" { return(LE); }
">=" { return(GE); }
"<" { return(LT); }
">" { return(GT); }
"&&" { return(AND);}
"||" { return(OR); }
. { printf("holiday: bad char: %s \n", yytext); }
%%
|