Como construir uma matriz com Bison / Yacc e uma regra recursiva

Com o Bison, descobri como colocar tudo em uma cadeia longa da seguinte forma:

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

e:

WORD arg_list { printf("%s, %s\n", $1, $2); }

Mas o problema é que vou ter que dividir $ 2 na segunda regra novamente para analisá-la. Existe uma maneira de preencher uma matriz em vez de apenas usar concatenação? Eu estou indo sobre isso da maneira errada?

Se eu precisar construir algo como uma lista encadeada que poderia fazer sentido, não sei qual seria a maneira correta de vincular a arg_list e depois limpar a memória.

questionAnswers(2)

yourAnswerToTheQuestion