typedef struct {
enum {
/* Top Level */
PROG = 1024, FUNC_DEF, PARAMS,
DECL, /* declaration */
DECLR, /* declarator */
DECLRS,
INIT_DECLRS, INIT_DECLR,
INITR, /* initializer */
TYPE_SPEC,
STRUCT, UNION,
PLAIN_DECL, PLAIN_DECLR,
/* Statments */
EXP_STMT, /* expression-statment */
COMP_STMT, IF_STMT, /* selection-statment */
WHILE_STMT, FOR_STMT,
CONT_STMT , BREAK_STMT, RET_STMT, /* 'continue', 'break', 'return' */
/* Expressions (expressions use their token ID to denote their types */
EXP
} type;
union {
int intval;
char *strvar;
} rec;
struct CNode *chd, *next;
/* For error reporting */
struct Location {
int row, col;
} loc;
} CNode;