buncha small fixes for ir, parser, etc.
authorJordan <jordanlavatai@gmail.com>
Fri, 16 Dec 2016 18:11:42 +0000 (10:11 -0800)
committerJordan <jordanlavatai@gmail.com>
Fri, 16 Dec 2016 18:11:42 +0000 (10:11 -0800)
src/ir.c
src/lexer.c
src/lexer_fsm.rl
src/name.c
src/parser.y

index 8652ddc..316486d 100644 (file)
--- a/src/ir.c
+++ b/src/ir.c
@@ -152,14 +152,14 @@ insert_framesheet(struct name*, int,  int,  int, int, uint8_t*);
 \r
 \r
 \r
-/* Dynamically allocate memory for a class data structure,\r
-   or cdat, after a class has been identified in a grammar.\r
-   We also create a stack of class pointers so that\r
-   we can access the cdat during processing of that\r
-   cdats sets and elements, a requirement because the\r
-   nature of recursive classes prevents us from accessing\r
-   the cdat based on the previous index into cdat_buf,\r
-   which is a list of all allocated cdats\r
+/*  Dynamically allocate memory for a class data structure, */\r
+/*    or cdat, after a class has been identified in a grammar. */\r
+/*    We also create a stack of class pointers so that */\r
+/*    we can access the cdat during processing of that */\r
+/*    cdats sets and elements, a requirement because the */\r
+/*    nature of recursive classes prevents us from accessing */\r
+/*    the cdat based on the previous index into cdat_buf, */\r
+/*    which is a list of all allocated cdats */\r
 /*  Cdats: A cdat is a class data structure. Cdats serve as the central       */\r
 /*  data types of the IR. Cdats contain pointers to their subclasses so that the relationship between     */\r
 /*  classes can be determined, but the subclasses are not represented inside  */\r
@@ -385,7 +385,6 @@ ir_init()
   u8_stpncpy(name.name, root, 4);\r
 \r
   pagesize = sysconf(_SC_PAGESIZE);\r
-  printf("pagesize is %l\n", pagesize);\r
 \r
   INIT_CDAT();\r
   *cdat_stackp = CURRENT_CDAT();\r
@@ -736,8 +735,6 @@ insert_set_namelist
        }\r
      \r
     }\r
- done:\r
-  ;\r
 }\r
 \r
 /*. We create new odats for each map variant that are children of the current odat/set\r
@@ -791,7 +788,7 @@ insert_map
   insert_ref(curr_mem_odatp, refid);\r
 \r
   /* If current odatp on stack has a link, then we need to make our own link. just set the vdat_idx */\r
-  if(CURR_SS_ODATP()->vdat_idx = 0)\r
+  if(CURR_SS_ODATP()->vdat_idx == 0)\r
     { //alloc a link\r
       linkp = alloc_link();\r
       linkp->type = CURR_SS_ODATP()->linkp->type;\r
@@ -968,17 +965,18 @@ insert_ref
 void\r
 insert_vdat\r
 ()\r
-{ struct odat* curr_ss_odatp;\r
-  struct vdat* curr_vdatp;\r
+{ struct vdat* curr_vdatp;\r
+\r
+  curr_vdatp = curr_vdat();\r
   \r
-  curr_vdatp->creator = curr_ss_odatp;\r
-  curr_ss_odatp->vdat_idx = num_vdats;\r
-  curr_ss_odatp->vdatp = curr_vdatp;\r
+  curr_vdatp->creator = CURR_SS_ODATP();\r
+  CURR_SS_ODATP()->vdat_idx = num_vdats;\r
+  CURR_SS_ODATP()->vdatp = curr_vdatp;\r
   alloc_vdat();\r
 }\r
 \r
 void\r
-insert_refid_statement\r
+insert_statement\r
 ( refid )\r
      int refid;\r
 { CURR_SS_ODATP()->refid = refid;\r
index 97e5e98..c22525a 100644 (file)
@@ -28,6 +28,7 @@
 #include <dirent.h>
 
 /* Local */
+#include "apc.h"
 #include "parser.tab.h"
 #ifndef DE_STACKSIZE
 #define DE_STACKSIZE 1024
index 344ffdb..f7b4665 100644 (file)
@@ -111,7 +111,7 @@ int lexer_setstr(uint8_t*, int);
   tok = name %to(push_name) ;
   
 
-tok_lexer := ((name | val | ref | dimensions | map) tok_delimiter)+ tok [\0];
+  tok_lexer := ((name | val | ref | dimensions | map) tok_delimiter)+ tok [\0];
 
   write data;
   
index 612426c..9fd82de 100644 (file)
@@ -37,5 +37,5 @@ name_u8_set
 ( struct name* name,
   ucs4_t uc
 )
-{ return u8_set(name->name, uc);
+{ return u8_set(name->name, uc, MAX_NAME_LEN);
 }
index 85c6c50..e509890 100644 (file)
@@ -1,10 +1,10 @@
 /* Asset Package Compiler */
-%code requires{
-  #include <stdint.h>
+%code requires  {
   #include <unitypes.h>
-  #include "apc.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 push_cdat(struct name*);
   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*);
+  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*);
   
   #define yylex lexer
 
@@ -34,7 +35,7 @@
 %union {
   int ref;
   int val;
-  uint8_t *str;
+  uint8_tstr;
   struct name* name;
   void *voidp;
 }
@@ -58,7 +59,7 @@
 %token <val> D
 %token <name> NAME
 //nonterminals
-%type <int> ref_id
+%type <val> ref_id
  /* Syntax Directed Translation Scheme of the APC grammar */
 
 /* Rules */
@@ -95,7 +96,7 @@ vdat_statement
 ;
 
 ref_statement:
-set_namelist ref_id                                  {insert_set_refid($2);};
+set_namelist ref_id                                  {insert_refid($2);};
 ;
 
 link_namelist:
@@ -115,14 +116,14 @@ set_namelist MOPEN map
 ;
 
 map:
-NAME NUM NUM PATH                            {insert_map(0, $1, $2, $3, 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 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);};
 ;
 
 //shift list_namelist name > reduce mlink