1 /* Asset Package Compiler */
10 extern int lexer_init();
17 %define parse.error verbose
19 %define api.value.type union
39 %type <uint64_t> olink
40 %type <uint64_t> ele_svlink
41 %type <uint64_t> set_svlink
58 /* Syntax Directed Translation Scheme of the APC grammar */
72 NAME CLOPEN {push_cdat($1);} class_block CLCLOSE {pop_cdat();};
87 RT NUM NUM NUM {insert_root($2, $3, $4);};
99 NUM NUM NUM REF {insert_quad($1, $2, $3, $4);};
102 HB NUM {insert_hitbox($2);}
108 | quad_list hitbox root
115 SOPEN set_label element_list set_map_data vdat SCLOSE {insert_set(); insert_vdat();};
116 | SOPEN set_label element_list set_map_data set_vlink SCLOSE {insert_set();};
117 | SOPEN set_label element_list set_map_data set_svlink SCLOSE {insert_set_svlink($5); insert_set(); };
118 | SOPEN set_label element_list vdat SCLOSE {insert_set(); insert_vdat();};
119 | SOPEN set_label element_list set_vlink SCLOSE {insert_set(); }
120 | SOPEN set_label element_list set_svlink SCLOSE {insert_set_svlink($4); insert_set();};
121 | SOPEN olink SCLOSE {insert_set_olink($2);};
126 HIGH NAME REF {insert_set_label($2,$3);};
127 | LOW NAME {insert_set_label($2, -1);};
135 REF NAME {insert_set_vlink($1, $2);};
142 //parent_id is the set_index of the subclass_index.
144 element_list element MED
149 HIGH NAME REF {insert_ele_label($2, $3);};
150 | LOW NAME {insert_ele_label($2, -1);};
154 REF NAME {insert_ele_vlink($1, $2);};
162 EOPEN ele_label hitbox root vdat ECLOSE {insert_ele(); insert_vdat();};
163 | EOPEN ele_label hitbox root ele_vlink ECLOSE {insert_ele(); };
164 | EOPEN ele_label hitbox root ele_svlink ECLOSE {insert_ele_svlink($5);insert_ele(); };
165 | EOPEN ele_label root vdat ECLOSE {insert_ele(); insert_vdat();};
166 | EOPEN ele_label root ele_vlink ECLOSE {insert_ele(); };
167 | EOPEN ele_label root ele_svlink ECLOSE {insert_ele_svlink($4); insert_ele(); };
168 | EOPEN olink ECLOSE {insert_ele_olink($2);};
172 VOPEN model_list VCLOSE
185 spritesheet HIGH framesheet
190 SSD NAME REF HEIGHT WIDTH NUM_PTRS frame_pointers LOW {insert_framesheet($1, $2, $3, $4, $5, $6);};
194 frame_pointers SSD HIGH FPTR {insert_frame_pointer($2, $4);};
195 | SSD FPTR {insert_frame_pointer($1, $2);};
201 yyerror (char const *s)
202 { fprintf(stderr, "%s\n", s);