Cómo construir una matriz con Bison / Yacc y una regla recursiva

Con Bison, descubrí cómo hacer todo en una larga cadena de la siguiente manera:

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

y:

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

Pero el problema es que luego tendré que dividir $ 2 en la segunda regla nuevamente para analizarlo. ¿Hay una manera de rellenar una matriz en lugar de usar concatenación? ¿Voy por esto de la manera incorrecta?

Si necesito crear algo como una lista enlazada que pueda tener sentido, simplemente no estoy seguro de cuál sería la forma correcta de enlazar a arg_list y luego limpiar la memoria.

Respuestas a la pregunta(2)

Su respuesta a la pregunta