/* ast.h */

ast_list *make_list(ast *, ast_list *);
ast_list *reverse_list(ast_list *);
ast *make_list_node(ast_list *);
ast *make_function(char *, ast_list *, ast_list *);
ast *make_fndefint(char *, long);
ast *make_constant(char *, long);
ast *make_realconstant(char *, float);
ast *make_fndefext(char *);
ast *make_variable(char *);
ast *make_array(char *, ast *);
ast *make_string(char *);
ast *make_assignment(ast_list *, ast *);
ast *make_binary_op(ast_kind, ast *, ast *);
ast *make_unary_op(ast_kind, ast *);
ast *make_call(char *, ast_list *);
ast *make_integer(long);
ast *make_real(float);
ast *make_statement(ast_kind, ast *, ast_list *, ast_list *);
ast *make_case_statement_number(long);
ast *make_case_statement_variable(char *);
ast *make_break_statement();
ast *make_default_statement();
ast *make_return_statement();

void ast_dump(ast *);
