X-Git-Url: https://www.kengrimes.com/gitweb/?p=henge%2Fapc.git;a=blobdiff_plain;f=src%2Fparser.y;h=e5098905bae7ad6da184d79cb14983ee1d6edbe8;hp=85c6c506c7325a0c0d3b237bdc846a3d57d2e526;hb=19d01f115230c63000ccb312866016f63c5e1e23;hpb=4f883c6be14a9721cd1793373b522dcf6a57f878 diff --git a/src/parser.y b/src/parser.y index 85c6c50..e509890 100644 --- a/src/parser.y +++ b/src/parser.y @@ -1,10 +1,10 @@ /* Asset Package Compiler */ -%code requires{ - #include +%code requires { #include - #include "apc.h" } + %{ + #include "apc.h" #include #include #include @@ -12,16 +12,17 @@ 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_t* str; struct name* name; void *voidp; } @@ -58,7 +59,7 @@ %token D %token NAME //nonterminals -%type ref_id +%type 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