2 #include "matcher_parser_lex.h"
3 #include "matcher_parser_parse.h"
6 #define MAX_STR_CONST 512
8 char string_buf[MAX_STR_CONST];
11 static void add_char(char ch)
13 if (string_buf_ptr - string_buf < sizeof(string_buf))
14 *string_buf_ptr++ = ch;
18 %option prefix="matcher_parser"
19 %option outfile="lex.yy.c"
27 "all" return MATCHER_ALL;
28 "unread" return MATCHER_UNREAD;
29 "~unread" return MATCHER_NOT_UNREAD;
30 "new" return MATCHER_NEW;
31 "~new" return MATCHER_NOT_NEW;
32 "marked" return MATCHER_MARKED;
33 "~marked" return MATCHER_NOT_MARKED;
34 "deleted" return MATCHER_DELETED;
35 "~deleted" return MATCHER_NOT_DELETED;
36 "replied" return MATCHER_REPLIED;
37 "~replied" return MATCHER_NOT_REPLIED;
38 "forwarded" return MATCHER_FORWARDED;
39 "~forwarded" return MATCHER_NOT_FORWARDED;
40 "subject" return MATCHER_SUBJECT;
41 "~subject" return MATCHER_NOT_SUBJECT;
42 "from" return MATCHER_FROM;
43 "~from" return MATCHER_NOT_FROM;
44 "to" return MATCHER_TO;
45 "~to" return MATCHER_NOT_TO;
46 "cc" return MATCHER_CC;
47 "~cc" return MATCHER_NOT_CC;
48 "to_or_cc" return MATCHER_TO_OR_CC;
49 "~to_or_cc" return MATCHER_NOT_TO_AND_NOT_CC;
50 "age_greater" return MATCHER_AGE_GREATER;
51 "age_lower" return MATCHER_AGE_LOWER;
52 "newsgroups" return MATCHER_NEWSGROUPS;
53 "~newsgroups" return MATCHER_NOT_NEWSGROUPS;
54 "inreplyto" return MATCHER_INREPLYTO;
55 "~inreplyto" return MATCHER_NOT_INREPLYTO;
56 "references" return MATCHER_REFERENCES;
57 "~references" return MATCHER_NOT_REFERENCES;
58 "score_greater" return MATCHER_SCORE_GREATER;
59 "score_lower" return MATCHER_SCORE_LOWER;
60 "score_equal" return MATCHER_SCORE_EQUAL;
61 "header" return MATCHER_HEADER;
62 "~header" return MATCHER_NOT_HEADER;
63 "headers_part" return MATCHER_HEADERS_PART;
64 "~headers_part" return MATCHER_NOT_HEADERS_PART;
65 "message" return MATCHER_MESSAGE;
66 "~message" return MATCHER_NOT_MESSAGE;
67 "body_part" return MATCHER_BODY_PART;
68 "~body_part" return MATCHER_NOT_BODY_PART;
69 "execute" return MATCHER_EXECUTE;
70 "~execute" return MATCHER_NOT_EXECUTE;
71 "matchcase" return MATCHER_MATCHCASE;
72 "match" return MATCHER_MATCH;
73 "regexpcase" return MATCHER_REGEXPCASE;
74 "regexp" return MATCHER_REGEXP;
75 "score" return MATCHER_SCORE;
76 "move" return MATCHER_MOVE;
77 "copy" return MATCHER_COPY;
78 "delete" return MATCHER_DELETE;
79 "mark" return MATCHER_MARK;
80 "unmark" return MATCHER_UNMARK;
81 "mark_as_read" return MATCHER_MARK_AS_READ;
82 "mark_as_unread" return MATCHER_MARK_AS_UNREAD;
83 "forward" return MATCHER_FORWARD;
84 "forward_as_attachment" return MATCHER_FORWARD_AS_ATTACHMENT;
85 "color" return MATCHER_COLOR;
86 "bounce" return MATCHER_BOUNCE;
88 "\n" return MATCHER_EOL;
89 "&" return MATCHER_AND;
90 "|" return MATCHER_OR;
93 string_buf_ptr = string_buf;
95 <string>\\n add_char('\n');
96 <string>\\t add_char('\t');
97 <string>\\r add_char('\r');
98 <string>\\b add_char('\b');
99 <string>\\f add_char('\f');
100 <string>\\. add_char(yytext[1]);
103 *string_buf_ptr = '\0';
104 yylval.str = string_buf;
105 return MATCHER_STRING;
112 yylval.str = yytext + 1;
113 yytext[strlen(yytext) - 1] = '\0';
114 return MATCHER_SECTION;
118 return MATCHER_INTEGER;