1 /* Asset Package Compiler */
13 extern int lexer_init();
20 %define parse.error verbose
49 %type <ref> ele_svlink
50 %type <ref> set_svlink
59 // Change width, height, num_ptrs to NUM because
60 // when scanning, we can't determine which NUM
70 /* Syntax Directed Translation Scheme of the APC grammar */
79 NAME CLOPEN {push_cdat($1);} class_block CLCLOSE {pop_cdat();};
104 MOPEN NAME NUM NUM NAME {insert_map($2, $3, $4, $5);};
105 | MOPEN NAME NAME {insert_map($2, 0, 0, $3);};
113 set_label vdat set_map_data element_list HP {insert_set(); insert_set_vdatid();};
114 | set_label set_vlink set_map_data element_list MP {insert_set();};
115 | set_label set_svlink set_map_data element_list LP {insert_set_svlink($2); insert_set(); };
116 | set_label set_map_data element_list MP {insert_set(); };
117 | set_label set_map_data LP {insert_set(); };
118 | set_label vdat element_list MP {insert_set(); insert_set_vdatid();};
119 | set_label set_vlink element_list LP {insert_set(); };
120 | set_label set_svlink element_list MP {insert_set_svlink($2); insert_set();};
121 | set_label element_list MP
123 | olink {insert_set_olink($1);};
129 NAME REF MP {insert_set_label($1,$2);};
130 | NAME LP {insert_set_label($1, -1);};
138 REF NAME HP {insert_set_vlink($1, $2);};
145 //parent_id is the set_index of the subclass_index.
147 element_list element HP
152 NAME REF MP {insert_ele_label($1, $2);};
153 | NAME LP {insert_ele_label($1, -1);};
157 REF NAME HP {insert_ele_vlink($1, $2);};
170 ele_label vdat ele_map_data {insert_ele(); insert_ele_vdatid();};
171 | ele_label ele_vlink ele_map_data {insert_ele(); };
172 | ele_label ele_svlink ele_map_data {insert_ele_svlink($2);insert_ele(); };
173 | ele_label ele_map_data {insert_ele();};
174 | ele_label vdat {insert_ele(); insert_ele_vdatid();};
175 | ele_label ele_vlink {insert_ele(); };
176 | ele_label ele_svlink {insert_ele_svlink($2); insert_ele(); ;};
177 | MOPEN olink {insert_ele_olink($2);};
182 | NAME NUM NUM NAME MP {insert_vdat($1, $2, $3, $4);};
183 | NAME NAME {insert_vdat($1, 0, 0, $2);};
196 spritesheet HP framesheet
201 SSD NAME REF HEIGHT WIDTH NUM_PTRS frame_pointers LP //{insert_framesheet($1, $2, $3, $4, $5, $6);};
205 frame_pointers SSD HP FPTR //{insert_frame_pointer($2, $4);};
206 | SSD FPTR //{insert_frame_pointer($1, $2);};
212 yyerror (char const *s)
213 { fprintf(stderr, "%s\n", s);