add support to SDLBackend for rendering 24bit data
[openc2e.git] / catalogue.ypp
blob51fca14ae94c1faa75997a71e1c85fb59f414ec0
1 %{
2     #include "Catalogue.h"
3     #include "catalogue.lex.h"
4     extern catalogueFlexLexer *catalexer;
5     extern Catalogue *parsing_cat;
6     static int catalex(void) { return catalexer->yylex(); }
7     #include <list>
9     extern void cataerror(char const *);
12 %union {
13     std::string *string;
14     int number;
16     bool boolean_v;
17     std::list<std::string> *list;
20 %token CTOK_TAG
21 %token CTOK_ARRAY
22 %token CTOK_OVERRIDE
23 %token <string> CTOK_STR
24 %token <number> CTOK_INT
26 %type <list> strings
27 %type <boolean_v> maybeOverride
31 root: cgroup {}
32     | root cgroup {}
33     ;
35 cgroup:
36     CTOK_TAG maybeOverride CTOK_STR strings
37     { parsing_cat->addVals(*$3, $2, -1, *$4);
38       delete $4; delete $3;
39     }
40   | CTOK_ARRAY maybeOverride CTOK_STR CTOK_INT strings
41     { parsing_cat->addVals(*$3, $2, $4, *$5);
42       delete $5; delete $3;
43     }
44   ;
46 maybeOverride:
47     CTOK_OVERRIDE { $$ = true;  }
48   |               { $$ = false; }
49   ;
51 strings:
52     CTOK_STR strings
53     { $2->push_front(*$1); delete $1; $$ = $2; }
54   | { $$ = new std::list<std::string>(); }
55   ;