File: parser.lex

package info (click to toggle)
plan 1.8.7-3
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 2,196 kB
  • ctags: 1,971
  • sloc: ansic: 24,392; perl: 1,361; sh: 1,030; makefile: 514; yacc: 120; sed: 17
file content (91 lines) | stat: -rw-r--r-- 2,774 bytes parent folder | download | duplicates (5)
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); }

%%