How to build an Array with Bison/Yacc and a Recursive Rule

前端 未结 2 1329
暗喜
暗喜 2021-01-03 10:27

With Bison, I figured out how to get everything into one long string as follows:

arg_list:
    WORD arg_list { strcat( $1, \"IFS\" ); $$ = strcat($1, $2); }          


        
2条回答
  •  太阳男子
    2021-01-03 11:18

    %union {
      char *char_ptr;
    }
    %token STRING
    %type  STRING string
    %%
    ...
    string:
        STRING        /* Lexic analyzer return STRING and set yylval = yytext; */
      | string STRING
        { char *str = (char*) malloc(strlen($1) + strlen($2) + 1);
          strcpy(str, $1);
          strcat(str, $2);
          free($2);
          free($1);
          $$ = str;
        }
      ;
    %%
    

提交回复
热议问题