api with struct definitions in header file
[henge/webcc.git] / src / apc / parser.y
index 64bed5a..12e8874 100644 (file)
 }
 
  //operators
-%token         CLOPEN   // /
-%token         CLCLOSE  // \
-%token         SOPEN
-%token         SCLOSE
-%token         EOPEN
-%token         ECLOSE
-%token         VOPEN
-%token         VCLOSE
-
-%token         QOPEN     //!
-%token         QCLOSE    //#
-%token         RT     //*
-%token         HB
-%token         MOD
-%token         SET
-%token         FS
-%token         ELE
+%token         CLOPEN    // (
+%token         CLCLOSE   // )
+%token         SOPEN     // {
+%token         SCLOSE    // }
+%token         EOPEN     // [
+%token         ECLOSE    // ]
+%token         VOPEN     // /
+%token         VCLOSE    // \
+
+%token         QOPEN     // !
+%token         QCLOSE    // @
+%token         RT        // &
+%token         HB        // #
 //nonterminal types
 %type <ref> olink
 %type <ref> ele_svlink
@@ -57,6 +53,9 @@
 %token <ref> REF
 %token <val> SSD
 %token <voidp> FPTR
+// Change width, height, num_ptrs to NUM because
+// when scanning, we can't determine which NUM
+// is which. 
 %token <val> WIDTH
 %token <val> HEIGHT
 %token <val> NUM_PTRS
@@ -79,7 +78,7 @@ class_list class
 ;
 
 class:
-NAME CLOPEN {push_cdat($1);} class_block CLCLOSE              {pop_cdat();};
+ NAME CLOPEN {push_cdat($1);} class_block CLCLOSE              {pop_cdat();};
 ;
 
 class_block:
@@ -119,10 +118,10 @@ quad_list
 ;
 
 set:
-SOPEN set_label element_list set_map_data vdat SCLOSE                           {insert_set(); insert_vdat();};
-| SOPEN set_label element_list set_map_data set_vlink SCLOSE                    {insert_set();};
-| SOPEN set_label element_list set_map_data set_svlink SCLOSE                   {insert_set_svlink($5); insert_set(); };
-| SOPEN set_label element_list vdat SCLOSE                                      {insert_set(); insert_vdat();};
+SOPEN set_label set_map_data element_list {alloc_vdat();} 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 {alloc_vdat();} 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);};
@@ -130,7 +129,7 @@ SOPEN set_label element_list set_map_data vdat SCLOSE
 
 
 set_label:
-HP NAME REF                                                 {insert_set_label($2,$3);};
+HP NAME REF                                                  {insert_set_label($2,$3);};
 | LP NAME                                                    {insert_set_label($2, -1);};
 ;
 
@@ -166,10 +165,10 @@ REF
 ;
 
 element:
-EOPEN ele_label hitbox root vdat ECLOSE                                        {insert_ele(); insert_vdat();};
+EOPEN ele_label hitbox root {alloc_vdat();} vdat ECLOSE                        {insert_ele(); insert_ele_vdatid();};
 | EOPEN ele_label hitbox root ele_vlink ECLOSE                                 {insert_ele(); };
 | EOPEN ele_label hitbox root ele_svlink ECLOSE                                {insert_ele_svlink($5);insert_ele(); };
-| EOPEN ele_label root vdat ECLOSE                                             {insert_ele(); insert_vdat();};
+| EOPEN ele_label root {alloc_vdat();} vdat ECLOSE                                             {insert_ele(); insert_ele_vdatid();};
 | EOPEN ele_label root ele_vlink ECLOSE                                        {insert_ele(); };
 | EOPEN ele_label root ele_svlink ECLOSE                                       {insert_ele_svlink($4); insert_ele(); };
 | EOPEN olink ECLOSE                                                           {insert_ele_olink($2);};
@@ -181,8 +180,8 @@ VOPEN model_list VCLOSE
 
 model_list:
 model_list model
-| model
-;
+|  model
+ ;
 
 model:
 spritesheet LP