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 "header" return MATCHER_HEADER;
61 "~header" return MATCHER_NOT_HEADER;
62 "headers_part" return MATCHER_HEADERS_PART;
63 "~headers_part" return MATCHER_NOT_HEADERS_PART;
64 "message" return MATCHER_MESSAGE;
65 "~message" return MATCHER_NOT_MESSAGE;
66 "body_part" return MATCHER_BODY_PART;
67 "~body_part" return MATCHER_NOT_BODY_PART;
68 "execute" return MATCHER_EXECUTE;
69 "~execute" return MATCHER_NOT_EXECUTE;
70 "matchcase" return MATCHER_MATCHCASE;
71 "match" return MATCHER_MATCH;
72 "regexpcase" return MATCHER_REGEXPCASE;
73 "regexp" return MATCHER_REGEXP;
74 "score" return MATCHER_SCORE;
75 "move" return MATCHER_MOVE;
76 "copy" return MATCHER_COPY;
77 "delete" return MATCHER_DELETE;
78 "mark" return MATCHER_MARK;
79 "unmark" return MATCHER_UNMARK;
80 "mark_as_read" return MATCHER_MARK_AS_READ;
81 "mark_as_unread" return MATCHER_MARK_AS_UNREAD;
82 "forward" return MATCHER_FORWARD;
83 "forward_as_attachment" return MATCHER_FORWARD_AS_ATTACHMENT;
85 "\n" return MATCHER_EOL;
86 "&" return MATCHER_AND;
87 "|" return MATCHER_OR;
90 string_buf_ptr = string_buf;
92 <string>\\n add_char('\n');
93 <string>\\t add_char('\t');
94 <string>\\r add_char('\r');
95 <string>\\b add_char('\b');
96 <string>\\f add_char('\f');
97 <string>\\. add_char(yytext[1]);
100 *string_buf_ptr = '\0';
101 yylval.str = string_buf;
102 return MATCHER_STRING;
109 yylval.str = yytext + 1;
110 yytext[strlen(yytext) - 1] = '\0';
111 return MATCHER_SECTION;
115 return MATCHER_INTEGER;