1 /* Asset Package Compiler */
11 extern int lexer_init(); //?
12 extern int lexer(); //?
13 extern void pop_cdat(void);
14 extern void push_cdat(uint8_t*);
15 extern void insert_vdat(void);
16 extern void insert_refid(int);
17 extern void insert_set_name(uint8_t*);
18 extern void insert_set_namelist(uint8_t*);
19 extern void insert_link_name(uint8_t*);
20 extern void insert_map(uint8_t*,int, int, int, int, uint8_t*);
21 extern void insert_mlink(uint8_t*, int);
22 extern void insert_vlink(uint8_t*, int);
23 extern void insert_framesheet(uint8_t* ,int, int, int,int, uint8_t*);
30 %define parse.error verbose
58 /* Syntax Directed Translation Scheme of the APC grammar */
67 NAME CLOPEN {push_cdat($1);} class_block CLCLOSE {pop_cdat();};
77 | class_list statement_list
82 statement_list statement
94 set_namelist REF {insert_refid($2);};
98 link_namelist NAME {insert_link_name($2);};
104 set_namelist NAME {insert_set_name($2);};
105 | NAME {insert_set_namelist($1);};
109 set_namelist MOPEN map
110 | set_namelist MOPEN mlink
114 NAME NUM NUM PATH {insert_map($1, 0, $3, 0, 0, $4);};
115 | NAME PATH {insert_map($1, 0, 0, 0, 0, $2);};
116 | NAME D PATH {insert_map($1, $2, 0, 0, 0, $3);};
117 | NAME D NUM NUM PATH {insert_map($1, $2, $3, $4, 0, $5);};
118 | NAME NUM NUM REF PATH {insert_map($1, 0, $2, $3, $4, $5);};
119 | NAME REF PATH {insert_map($1, 0, 0, 0, $2, $3);};
120 | NAME D REF PATH {insert_map($1, $2, 0, 0, $3, $4);};
121 | NAME D NUM NUM REF PATH {insert_map($1, $2, $3, $4, $5, $6);};
124 //shift list_namelist name > reduce mlink
126 MOPEN LINK NAME LINK link_namelist PATH {insert_mlink($3, 0); };
127 | MOPEN LINK link_namelist PATH {insert_mlink(NULL, 0); };
128 | MOPEN LINK REF PATH {insert_mlink(NULL, $3); };
129 | MOPEN LINK NAME LINK REF PATH {insert_mlink($3,$5); };
132 //shift list_namelist name > reduce vlink
134 LINK NAME LINK link_namelist PATH {insert_vlink($2, 0); };
135 | LINK link_namelist PATH {insert_vlink(NULL, 0);};
136 | LINK REF PATH {insert_vlink(NULL, $2);};//vdat of ref
137 | LINK NAME LINK REF PATH {insert_vlink($2, $4);};//modelname of ref
142 set_namelist MOPEN REF
146 set_namelist SS spritesheet_statement
147 | set_namelist SS vlink
150 spritesheet_statement:
151 NAME D HEIGHT WIDTH PATH {insert_framesheet($1, $2, $3, $4, 0, $5);};
152 | NAME D PATH {insert_framesheet($1, $2, 0, 0, 0, $3);};
153 | NAME HEIGHT WIDTH PATH {insert_framesheet($1, 0, $2, $3, 0, $4);};
154 | NAME PATH {insert_framesheet($1, 0, 0, 0, 0, $2);};
155 | NAME D HEIGHT WIDTH REF PATH {insert_framesheet($1, $2, $3, $4, $5, $6);};
156 | NAME D REF PATH {insert_framesheet($1, $2, 0, 0, $3, $4);};
157 | NAME HEIGHT WIDTH REF PATH {insert_framesheet($1, 0, $2, $3, $4, $5);};
158 | NAME REF PATH {insert_framesheet($1, 0, 0, 0, $2, $3);};
164 yyerror (char const *s)
165 { fprintf(stderr, "%s\n", s);