yacc no parece gustarle cuando mis tokens son del tipo que definí.yacc - campo tiene tipo incompleto
En la parte superior de mi gramática (.y
) archivo en un bloque %{ ... %}
, que incluyen un archivo de cabecera que define la siguiente estructura:
typedef struct _spim_register {
spim_register_type type; /* This is a simple enumeration, already defined */
int number;
} spim_register;
Antes de mi lista de reglas, que tengo:
%token AREG
...
%union {
struct _spim_register reg;
}
...
%type <reg> register AREG
me sale
error: field ‘reg’ has incomplete type
en la línea en el %union
cláusula al intentar compilar el código producido por bison. En mi declaración %union
, tratando de declarar reg escribiendo spim_register reg;
da el error:
unknown type name ‘spim_register’
Parece que hay algo especial en %union { ... }
, porque soy capaz de utilizar las estructuras de datos de mi archivo de cabecera en las acciones de las normas.
[Posiblemente relacionado] (http://stackoverflow.com/questions/1430390/include-struct-in-the-union-def-with-bison-yacc) – user786653