X-Git-Url: https://www.kengrimes.com/gitweb/?p=henge%2Fwebcc.git;a=blobdiff_plain;f=src%2Fapc%2Fparser.y;h=c45a5ce04bc1977539d829332d2c1b78d53d2cd9;hp=9190bc413187da8cd027e489bc63459bfe4aeb45;hb=301cac5f6e2edcecf2e1bd89aee5182130a213fc;hpb=0f505368fa8abbc2e9ab0296b9a5e6bd4869345f diff --git a/src/apc/parser.y b/src/apc/parser.y index 9190bc4..c45a5ce 100644 --- a/src/apc/parser.y +++ b/src/apc/parser.y @@ -67,7 +67,6 @@ %precedence LP %precedence MP %precedence HP - /* Syntax Directed Translation Scheme of the APC grammar */ /* Rules */ @@ -77,7 +76,7 @@ class_list ; class: - CLOPEN NAME {push_cdat($2);} class_block CLCLOSE {pop_cdat();}; + NAME CLOPEN {push_cdat($1);} class_block CLCLOSE {pop_cdat();}; ; class_list: @@ -96,93 +95,92 @@ set_list set | 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: