Я немного запутался в том, как указать тип члена моей грамматики. Я хочу объявить prog и decls как ASTNode. Я собираюсь использовать эти элементы для добавления в список и т. д. Но yacc не может распознать их как ASTNode, и я получаю ошибки типа.
Здесь мои tIdent, tCharConst, tIntConstant имеют несколько типов, но как присвоить тип ASTNode моим членам.
%union{
int ival;
char cval;
char *sval;
struct ASTNode *nval;
}
%token <sval> tIdent
%token <cval> tCharConst
%token <ival> tIntConst
prog : decls ;
decls : /* empty */
| decls decl
;