我对如何指定我的语法成员的类型有点困惑。我想将 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
;