%precedence LP
%precedence MP
%precedence HP
-
/* Syntax Directed Translation Scheme of the APC grammar */
/* Rules */
;
class:
- CLOPEN NAME {push_cdat($2);} class_block CLCLOSE {pop_cdat();};
+ NAME CLOPEN {push_cdat($1);} class_block CLCLOSE {pop_cdat();};
;
class_list:
| set
;
-variant_list:
-variant_list variant
-| variant
-;
-
-hitbox:
-HB NUM
-;
-
-root:
-ROOT NUM NUM NUM
+map_list:
+map_list map MP
+| map LP
;
-variant:
-MOPEN NAME NUM NUM NAME {insert_variant($2, $3, $4, $5);};
+map:
+MOPEN NAME NUM NUM NAME {insert_map($2, $3, $4, $5);};
+| MOPEN NAME NAME {insert_map($2, 0, 0, $3);};
;
set_map_data:
-variant_list
-| variant_list HP hitbox root
-| variant_list MP root
+map_list MP
;
set:
-SOPEN set_label set_map_data element_list vdat SCLOSE {insert_set(); insert_set_vdatid();};
-| SOPEN set_label set_map_data element_list set_vlink SCLOSE {insert_set();};
-| SOPEN set_label set_map_data element_list set_svlink SCLOSE {insert_set_svlink($5); insert_set(); };
-| SOPEN set_label element_list vdat SCLOSE {insert_set(); insert_set_vdatid();};
-| SOPEN set_label element_list set_vlink SCLOSE {insert_set(); }
-| SOPEN set_label element_list set_svlink SCLOSE {insert_set_svlink($4); insert_set();};
-| SOPEN olink SCLOSE {insert_set_olink($2);};
+set_label vdat set_map_data element_list HP {insert_set(); insert_set_vdatid();};
+| set_label set_vlink set_map_data element_list MP {insert_set();};
+| set_label set_svlink set_map_data element_list LP {insert_set_svlink($2); insert_set(); };
+| set_label set_map_data element_list MP {insert_set(); };
+| set_label set_map_data LP {insert_set(); };
+| set_label vdat element_list MP {insert_set(); insert_set_vdatid();};
+| set_label set_vlink element_list LP {insert_set(); };
+| set_label set_svlink element_list MP {insert_set_svlink($2); insert_set();};
+| set_label element_list MP
+| set_label vdat LP
+| olink {insert_set_olink($1);};
;
+
set_label:
-HP NAME REF {insert_set_label($2,$3);};
-| LP NAME {insert_set_label($2, -1);};
+NAME REF MP {insert_set_label($1,$2);};
+| NAME LP {insert_set_label($1, -1);};
;
set_svlink:
-REF
-
+REF MP
;
set_vlink:
-REF NAME {insert_set_vlink($1, $2);};
+REF NAME HP {insert_set_vlink($1, $2);};
;
olink:
-REF
+REF LP
;
//parent_id is the set_index of the subclass_index.
element_list:
-element_list element MP
+element_list element HP
| element LP
;
ele_label:
-HP NAME REF {insert_ele_label($2, $3);};
-| LP NAME {insert_ele_label($2, -1);};
+NAME REF MP {insert_ele_label($1, $2);};
+| NAME LP {insert_ele_label($1, -1);};
;
ele_vlink:
-REF NAME {insert_ele_vlink($1, $2);};
+REF NAME HP {insert_ele_vlink($1, $2);};
;
ele_svlink:
-REF
+REF MP
;
ele_map_data:
-variant_list
+map MP
+| map_list HP
+;
element:
-EOPEN ele_label ele_map_data vdat ECLOSE {insert_ele(); insert_ele_vdatid();};
-| EOPEN ele_label ele_map_data ele_vlink ECLOSE {insert_ele(); };
-| EOPEN ele_label ele_map_data ele_svlink ECLOSE {insert_ele_svlink($4);insert_ele(); };
-| EOPEN ele_label vdat ECLOSE {insert_ele(); insert_ele_vdatid();};
-| EOPEN ele_label ele_vlink ECLOSE {insert_ele(); };
-| EOPEN ele_label ele_svlink ECLOSE {insert_ele_svlink($3); insert_ele(); ;}
-| EOPEN olink ECLOSE {insert_ele_olink($2);};
+ ele_label vdat ele_map_data {insert_ele(); insert_ele_vdatid();};
+| ele_label ele_vlink ele_map_data {insert_ele(); };
+| ele_label ele_svlink ele_map_data {insert_ele_svlink($2);insert_ele(); };
+| ele_label ele_map_data {insert_ele();};
+| ele_label vdat {insert_ele(); insert_ele_vdatid();};
+| ele_label ele_vlink {insert_ele(); };
+| ele_label ele_svlink {insert_ele_svlink($2); insert_ele(); ;};
+| MOPEN olink {insert_ele_olink($2);};
;
vdat:
-VOPEN model_list
-| VOPEN NAME NUM NUM NAME {insert_vdat($2, $3, $4, $5);};
+model_list LP
+| NAME NUM NUM NAME MP {insert_vdat($1, $2, $3, $4);};
+| NAME NAME {insert_vdat($1, 0, 0, $2);};
;
model_list: