Incluir estructura en %union def con Bison/Yacc

Incluir estructura en %union def con Bison/Yacc


Estoy intentando incluir una estructura como parte de la unión con Bison, pero aparece un error en los 'argumentos del nodo de estructura' en %union:


parser.y:17: error: field ‘args’ has incomplete type

El código:


struct node {
char * val;
struct node * next;
};
%}
%union {
char * string;
struct node args;
}
%token <string> CD WORD PWD EXIT
%type <args> arg_list

¿Alguien sabe qué estoy haciendo mal?


Respuestas:


Aún mejor, use la directiva %code con la opción "requiere", es decir:


%code requires {
struct node {
char * val;
struct node * next;
};
}
%union {
char * string;
struct node args;
}

Esto incluirá el código en el bloque "requiere" en el archivo tab.h, así como el archivo fuente del analizador.


De la documentación:http://www.gnu.org/software/bison/manual/html_node/Decl-Summary.html#Decl-Summary