enum ast_type {
an_assign, an_binop, an_bool, an_char, an_cons, an_funcall, an_fundecl,
an_ident, an_if, an_int, an_list, an_nil, an_return, an_stmt_expr,
- an_unop, an_vardecl, an_while
+ an_tuple, an_unop, an_vardecl, an_while
};
struct ast {
enum ast_type type;
//struct { } an_nil;
struct ast *an_return;
struct ast *an_stmt_expr;
+ struct {
+ struct ast *left;
+ struct ast *right;
+ } an_tuple;
struct {
enum unop op;
struct ast *l;
struct ast *ast_nil();
struct ast *ast_return(struct ast *rtrn);
struct ast *ast_stmt_expr(struct ast *expr);
+struct ast *ast_tuple(struct ast *left, struct ast *right);
struct ast *ast_unop(enum unop op, struct ast *l);
struct ast *ast_vardecl(struct ast *ident, struct ast *l);
struct ast *ast_while(struct ast *pred, struct ast *body);