--- a/c2iec.y +++ b/c2iec.y @@ -31,8 +31,7 @@ typedef enum { decl_all, - decl_inout, - decl_var, + decl_func, fifo_entry_num /* reflects the number of enum entries */ } fifo_entry_t; @@ -285,9 +284,13 @@ | declaration_specifiers init_declarator_list ';' { char *p; + while( (p=fifo_pop(decl_func)) != NULL) + { + printf(p, $<str>1); + strcpy($<str>$, ""); + } while( (p=fifo_pop(decl_all)) != NULL) { -// sprintf(TAIL($<str>$), p, $<str>1); printf(p, $<str>1); strcpy($<str>$, ""); } @@ -398,8 +401,6 @@ { strcpy($<str>$, ""); sprintf(TAIL($<str>$), p, $<str>1); -// printf(p, $<str>1); -// strcpy($<str>$, ""); } } | unnamed_struct_or_union_specifier ';' @@ -517,21 +518,21 @@ | direct_declarator '(' parameter_type_list ')' { sprintf($<str>$, "FUNCTION %s:%%s;\n",$<str>1); - fifo_push(decl_all, $<str>$); + fifo_push(decl_func, $<str>$); strcpy($<str>$, $<str>1); strcpy($<str>$, ""); } | direct_declarator '(' identifier_list ')' { sprintf($<str>$, "FUNCTION %s:%%s;\n",$<str>1); - fifo_push(decl_all, $<str>$); + fifo_push(decl_func, $<str>$); strcpy($<str>$, $<str>1); strcpy($<str>$, ""); } | direct_declarator '(' ')' { sprintf($<str>$, "FUNCTION %s:%%s;\n",$<str>1); - fifo_push(decl_all, $<str>$); + fifo_push(decl_func, $<str>$); strcpy($<str>$, ""); strcpy($<str>$, ""); } @@ -713,6 +714,10 @@ | declaration_specifiers declarator compound_statement { char *p; + while( (p=fifo_pop(decl_func)) != NULL) + { + printf(p, $<str>1); + } while( (p=fifo_pop(decl_all)) != NULL) { printf(p, $<str>1);