updating ir
[henge/webcc.git] / src / apc / parser.y
index 12e8874..e6d145c 100644 (file)
@@ -53,6 +53,7 @@
 %token <ref> REF
 %token <val> SSD
 %token <voidp> FPTR
+%token <voidp> QPTR
 // Change width, height, num_ptrs to NUM because
 // when scanning, we can't determine which NUM
 // is which. 
@@ -78,7 +79,7 @@ class_list class
 ;
 
 class:
NAME CLOPEN {push_cdat($1);} class_block CLCLOSE              {pop_cdat();};
CLOPEN NAME {push_cdat($2);} class_block CLCLOSE              {pop_cdat();};
 ;
 
 class_block:
@@ -93,35 +94,30 @@ set_list set
 ;
 
 root:
-RT NUM NUM NUM                                                {insert_root($2, $3, $4);};
+RT NUM NUM NUM                                      {insert_root($2, $3, $4);};
 ;
 
-quad_list:
-quad_list quad
-| quad
-;
-
-quad:
-QOPEN NUM NUM NUM REF QCLOSE                                  {insert_quad($2, $3, $4, $5);};
+quad_file:
+QOPEN QPTR  QCLOSE                                  {insert_quad($2);};
 
 hitbox:
-HB NUM                                                        {insert_hitbox($2);}
+HB NUM                                              {insert_hitbox($2);}
 ;
 
 set_map_data:
-quad_list
-| quad_list hitbox
-| quad_list hitbox root
+quad_file
+| quad_file hitbox
+| quad_file hitbox root
 | hitbox root
 | hitbox
 | root
 ;
 
 set:
-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 {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 {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);};
@@ -129,16 +125,17 @@ SOPEN set_label set_map_data element_list {alloc_vdat();} vdat SCLOSE
 
 
 set_label:
-HP NAME REF                                                  {insert_set_label($2,$3);};
-| LP NAME                                                    {insert_set_label($2, -1);};
+HP NAME REF                                          {insert_set_label($2,$3);};
+| LP NAME                                            {insert_set_label($2, -1);};
 ;
 
 set_svlink:
 REF
+
 ;
 
 set_vlink:
-REF NAME                                                       {insert_set_vlink($1, $2);};
+REF NAME                                             {insert_set_vlink($1, $2);};
 ;
 
 olink:
@@ -152,12 +149,12 @@ element_list element MP
 ;
 
 ele_label:
-HP NAME REF                                                                  {insert_ele_label($2, $3);};
-| LP NAME                                                                     {insert_ele_label($2, -1);};
+HP NAME REF                                          {insert_ele_label($2, $3);};
+| LP NAME                                            {insert_ele_label($2, -1);};
 ;
 
 ele_vlink:
-REF NAME                                                                       {insert_ele_vlink($1, $2);};
+REF NAME                                             {insert_ele_vlink($1, $2);};
 ;
 
 ele_svlink:
@@ -168,7 +165,7 @@ element:
 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 {alloc_vdat();} vdat ECLOSE                                             {insert_ele(); insert_ele_vdatid();};
+| 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);};
@@ -193,12 +190,12 @@ spritesheet HP framesheet
 ;
 
 framesheet:
-SSD NAME REF HEIGHT WIDTH NUM_PTRS frame_pointers LP                         {insert_framesheet($1, $2, $3, $4, $5, $6);};
+SSD NAME REF HEIGHT WIDTH NUM_PTRS frame_pointers LP                     {insert_framesheet($1, $2, $3, $4, $5, $6);};
 ;
 
 frame_pointers:
-frame_pointers SSD HP FPTR                                           {insert_frame_pointer($2, $4);};
-| SSD FPTR                                                        {insert_frame_pointer($1, $2);};
+frame_pointers SSD HP FPTR                                              {insert_frame_pointer($2, $4);};
+| SSD FPTR                                                              {insert_frame_pointer($1, $2);};
 ;
 
 %%