1 /* Asset Package Compiler */
11 extern int lexer_init();
18 %define parse.error verbose
20 %define api.value.type union
32 %type <str> elem_label
42 /* Syntax Directed Translation Scheme of the APC grammar */
48 class_list {condense();} //Seperate file?
52 class_list class {cbi++;};
61 class_label CLOPEN class_closure CLCLOSE {CB[cbi].label = $1;};
66 | subclass_list set_list
71 subclass_list class {CB[cbi].subclass_index++;};
76 set_list set {CB[cbi].set_index++;};
81 //set needs a label, vdat_id.
83 set_map_data element_list {insert_set();};
88 //TODO: Figure out what to do with hitbox and root.
92 | ref_list hitbox root
103 quads quad {OB[obi].ref_index++;OB[obi].num_ref++;};
108 NUM NUM NUM NUM {insert_ref($1, $2, $3, $4);};
119 //parent_id is the set_index of the subclass_index.
121 element_list element {CB[cbi].set_stack[stack_index].num_ele++;};
126 set_label elem_label vdat {insert_ele($2,$3); vbi++;};
138 vdat model {VB[vbi].num_models++;};
148 label SS FNAME {insert_fdat($1, $2, $3);};
173 yyerror (char const *s)
174 { fprintf(stderr, "%s\n", s);