added everything to src
[henge/apc.git] / parser.y
diff --git a/parser.y b/parser.y
deleted file mode 100644 (file)
index 6fe0969..0000000
--- a/parser.y
+++ /dev/null
@@ -1,177 +0,0 @@
-/* Asset Package Compiler */
-%code requires{
-  #include <stdint.h>
-  #include <unitypes.h>
-  #include "apc.h"
-}
-%{
-  #include <stdio.h>
-  #include <string.h>
-  #include <dirent.h>
-
-  extern int lexer_init(); //?
-  extern int lexer(); //?
-  extern void pop_cdat(void);
-  extern void push_cdat(uint8_t*);
-  extern void insert_vdat(void);
-  extern void insert_refid(int);
-  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(int, uint8_t*, int, int, uint8_t*);
-  extern void insert_mlink(uint8_t*, int);
-  extern void insert_vlink(uint8_t*, int);
-  extern void insert_framesheet(uint_t* int, int, int,int, uint8_t*);
-  
-  #define yylex lexer
-
-
-  void yyerror();
-%}
-%define parse.error verbose
-%define lr.type ielr
-%glr-parser
-
-%union {
-  int ref;
-  int val;
-  uint8_t *str;
-  struct name* name;
-  void *voidp;
-}
-
- //operators
-%token         CLOPEN    // (
-%token         CLCLOSE   // )
-%token         MOPEN     // ~
-%token         HB
-%token         ROOT
-%token         SS
-%token         LINK      //#
-%token         SCLOSE
-%token         CHILD
-//terminals
-%token <val> NUM
-%token <str> PATH
-%token <ref> REF
-%token <val> HEIGHT
-%token <val> WIDTH
-%token <val> D
-%token <name> NAME
-%token SHIFT
-//nonterminals
-%type <int> ref_id
- /* Syntax Directed Translation Scheme of the APC grammar */
-
-/* Rules */
-%%
-cdat_buf:
-class_block
-;
-
-class:
-NAME CLOPEN {push_cdat($1);} class_block CLCLOSE              {pop_cdat();};
-;
-
-class_list:
-class_list class
-| class
-;
-
-class_block:
-class_list
-| class_list statement_list
-| statement_list
-;
-
-statement_list:
-statement_list statement
-| statement
-;
-
-statement:
-vdat_statement
-| map_statement
-| ref_statement
-| olink
-;
-
-ref_statement:
-set_namelist ref_id                                  {insert_set_refid($2);};
-;
-
-link_namelist:
-link_namelist NAME                                {insert_link_name($2);};
-| NAME                                            {};
-;
-
-
-set_namelist:
-set_namelist NAME                                     {insert_set_name($2);};
-| NAME                                             {insert_set_namelist($1);};
-;
-
-map_statement:
-set_namelist MOPEN map
-| set_namelist MOPEN mlink
-;
-
-map:
-NAME NUM NUM PATH                            {insert_map($1, 0, $3, $4, 0, $5);};
-| 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);};
-;
-
-//shift list_namelist name > reduce mlink
-mlink:
-MOPEN LINK NAME LINK link_namelist PATH    {insert_mlink($4, 0);     };
-| MOPEN LINK link_namelist PATH            {insert_mlink(NULL, 0);   };    
-| MOPEN LINK ref_id PATH                   {insert_mlink(NULL, $4);  };
-| MOPEN LINK NAME LINK ref_id PATH         {insert_mlink($4,$6);     };
-;
-
-//shift list_namelist name > reduce vlink 
-vlink:
-LINK NAME LINK link_namelist PATH             {insert_vlink($2, 0); };
-| LINK link_namelist PATH                     {insert_vlink(NULL, 0);};
-| LINK REF PATH                               {insert_vlink(NULL, $2);};//vdat of ref
-| LINK NAME LINK REF PATH                     {insert_vlink($2, $4);};//modelname of ref
-;
-
-
-olink:
-set_namelist MOPEN REF 
-;
-
-ref_id:
-LINK REF                                            {$$ = $2;};
-;
-
-
-vdat_statement:
-set_namelist SS spritesheet_statement
-| set_namelist SS vlink                   
-;
-
-spritesheet_statement:
-NAME D HEIGHT WIDTH PATH                     {insert_framesheet($1, $2, $3, $4, 0, $5);};
-| 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);};
-;
-
-%%
-
-void
-yyerror (char const *s)
-{ fprintf(stderr, "%s\n", s);
-}