--ref_id
[henge/apc.git] / src / parser.y
index e47ae97..95a47cf 100644 (file)
@@ -4,24 +4,23 @@
 }
 
 %{
-  #include "apc.h"
   #include <stdio.h>
   #include <string.h>
   #include <dirent.h>
-
+  #include <unitypes.h>
   extern int lexer_init(); //?
   extern int lexer(); //?
   extern void pop_cdat(void);
-  extern void push_cdat(struct name*);
+  extern void push_cdat(uint8_t*);
   extern void insert_vdat(void);
   extern void insert_refid(int);
-  extern void insert_set_name(struct name*);
-  extern void insert_set_namelist(struct name*);
-  extern void insert_link_name(struct name*);
-  extern void insert_map(struct name*,int, int, int, int, uint8_t*);
-  extern void insert_mlink(struct name*, int);
-  extern void insert_vlink(struct name*, int);
-  extern void insert_framesheet(struct name* ,int, int, int,int, uint8_t*);
+  extern void insert_set_name(uint8_t*);
+  extern void insert_set_namelist(uint8_t*);
+  extern void insert_link_name(uint8_t*);
+  extern void insert_map(uint8_t*,int, int, int, int, uint8_t*);
+  extern void insert_mlink(uint8_t*, int);
+  extern void insert_vlink(uint8_t*, int);
+  extern void insert_framesheet(uint8_t* ,int, int, int,int, uint8_t*);
   
   #define yylex lexer
 
 %define lr.type ielr
 
 %union {
-  int ref;
+  long long ref;
   int val;
   uint8_t* str;
-  struct name* name;
   void *voidp;
 }
 
@@ -56,9 +54,7 @@
 %token <val> HEIGHT
 %token <val> WIDTH
 %token <val> D
-%token <name> NAME
-//nonterminals
-%type <val> ref_id
+%token <str> NAME
  /* Syntax Directed Translation Scheme of the APC grammar */
 
 /* Rules */
@@ -95,7 +91,7 @@ vdat_statement
 ;
 
 ref_statement:
-set_namelist ref_id                                  {insert_refid($2);};
+set_namelist REF                                  {insert_refid($2);};
 ;
 
 link_namelist:
@@ -119,18 +115,18 @@ NAME NUM NUM PATH                            {insert_map($1,  0, $3,  0,  0,  $4
 | NAME PATH                                  {insert_map($1,  0,  0,  0,  0,  $2);};
 | NAME D PATH                                {insert_map($1, $2,  0,  0,  0,  $3);};
 | NAME D NUM NUM PATH                        {insert_map($1, $2, $3, $4,  0,  $5);};
-| NAME NUM NUM ref_id PATH                   {insert_map($1,  0, $2, $3, $4,  $5);};
-| NAME ref_id PATH                           {insert_map($1,  0,  0,  0, $2,  $3);};
-| NAME D ref_id PATH                         {insert_map($1, $2,  0,  0, $3,  $4);};
-| NAME D NUM NUM ref_id PATH                 {insert_map($1, $2, $3, $4, $5,  $6);};
+| NAME NUM NUM REF PATH                   {insert_map($1,  0, $2, $3, $4,  $5);};
+| NAME REF PATH                           {insert_map($1,  0,  0,  0, $2,  $3);};
+| NAME D REF PATH                         {insert_map($1, $2,  0,  0, $3,  $4);};
+| NAME D NUM NUM REF PATH                 {insert_map($1, $2, $3, $4, $5,  $6);};
 ;
 
 //shift list_namelist name > reduce mlink
 mlink:
 MOPEN LINK NAME LINK link_namelist PATH    {insert_mlink($3, 0);     };
 | MOPEN LINK link_namelist PATH            {insert_mlink(NULL, 0);   };    
-| MOPEN LINK ref_id PATH                   {insert_mlink(NULL, $3);  };
-| MOPEN LINK NAME LINK ref_id PATH         {insert_mlink($3,$5);     };
+| MOPEN LINK REF PATH                      {insert_mlink(NULL, $3);  };
+| MOPEN LINK NAME LINK REF PATH            {insert_mlink($3,$5);     };
 ;
 
 //shift list_namelist name > reduce vlink 
@@ -146,11 +142,6 @@ olink:
 set_namelist MOPEN REF 
 ;
 
-ref_id:
-LINK REF                                            {$$ = $2;};
-;
-
-
 vdat_statement:
 set_namelist SS spritesheet_statement
 | set_namelist SS vlink                   
@@ -161,10 +152,10 @@ NAME D HEIGHT WIDTH PATH                     {insert_framesheet($1, $2, $3, $4,
 | NAME D PATH                                {insert_framesheet($1, $2, 0, 0, 0, $3);};
 | NAME HEIGHT WIDTH PATH                     {insert_framesheet($1, 0, $2, $3, 0, $4);};
 | NAME PATH                                  {insert_framesheet($1, 0, 0, 0, 0, $2);};
-| NAME D HEIGHT WIDTH ref_id PATH            {insert_framesheet($1, $2, $3, $4, $5, $6);};
-| NAME D ref_id PATH                         {insert_framesheet($1, $2, 0, 0, $3, $4);};
-| NAME HEIGHT WIDTH ref_id PATH              {insert_framesheet($1, 0, $2, $3, $4, $5);};
-| NAME ref_id PATH                           {insert_framesheet($1, 0, 0, 0, $2, $3);};
+| NAME D HEIGHT WIDTH REF PATH            {insert_framesheet($1, $2, $3, $4, $5, $6);};
+| NAME D REF PATH                         {insert_framesheet($1, $2, 0, 0, $3, $4);};
+| NAME HEIGHT WIDTH REF PATH              {insert_framesheet($1, 0, $2, $3, $4, $5);};
+| NAME REF PATH                           {insert_framesheet($1, 0, 0, 0, $2, $3);};
 ;
 
 %%