1 /* Asset Package Compiler */
12 extern int lexer_init();
19 %define parse.error verbose
46 %type <ref> ele_svlink
47 %type <ref> set_svlink
56 // Change width, height, num_ptrs to NUM because
57 // when scanning, we can't determine which NUM
67 /* Syntax Directed Translation Scheme of the APC grammar */
81 NAME CLOPEN {push_cdat($1);} class_block CLCLOSE {pop_cdat();};
96 RT NUM NUM NUM {insert_root($2, $3, $4);};
105 QOPEN NUM NUM NUM REF QCLOSE {insert_quad($2, $3, $4, $5);};
108 HB NUM {insert_hitbox($2);}
114 | quad_list hitbox root
121 SOPEN set_label set_map_data element_list {alloc_vdat();} vdat SCLOSE {insert_set(); insert_set_vdatid();};
122 | SOPEN set_label set_map_data element_list set_vlink SCLOSE {insert_set();};
123 | SOPEN set_label set_map_data element_list set_svlink SCLOSE {insert_set_svlink($5); insert_set(); };
124 | SOPEN set_label element_list {alloc_vdat();} vdat SCLOSE {insert_set(); insert_set_vdatid();};
125 | SOPEN set_label element_list set_vlink SCLOSE {insert_set(); }
126 | SOPEN set_label element_list set_svlink SCLOSE {insert_set_svlink($4); insert_set();};
127 | SOPEN olink SCLOSE {insert_set_olink($2);};
132 HP NAME REF {insert_set_label($2,$3);};
133 | LP NAME {insert_set_label($2, -1);};
141 REF NAME {insert_set_vlink($1, $2);};
148 //parent_id is the set_index of the subclass_index.
150 element_list element MP
155 HP NAME REF {insert_ele_label($2, $3);};
156 | LP NAME {insert_ele_label($2, -1);};
160 REF NAME {insert_ele_vlink($1, $2);};
168 EOPEN ele_label hitbox root {alloc_vdat();} vdat ECLOSE {insert_ele(); insert_ele_vdatid();};
169 | EOPEN ele_label hitbox root ele_vlink ECLOSE {insert_ele(); };
170 | EOPEN ele_label hitbox root ele_svlink ECLOSE {insert_ele_svlink($5);insert_ele(); };
171 | EOPEN ele_label root {alloc_vdat();} vdat ECLOSE {insert_ele(); insert_ele_vdatid();};
172 | EOPEN ele_label root ele_vlink ECLOSE {insert_ele(); };
173 | EOPEN ele_label root ele_svlink ECLOSE {insert_ele_svlink($4); insert_ele(); };
174 | EOPEN olink ECLOSE {insert_ele_olink($2);};
178 VOPEN model_list VCLOSE
191 spritesheet HP framesheet
196 SSD NAME REF HEIGHT WIDTH NUM_PTRS frame_pointers LP {insert_framesheet($1, $2, $3, $4, $5, $6);};
200 frame_pointers SSD HP FPTR {insert_frame_pointer($2, $4);};
201 | SSD FPTR {insert_frame_pointer($1, $2);};
207 yyerror (char const *s)
208 { fprintf(stderr, "%s\n", s);