#include "ast.h" #include #include #include enum ivy_status ivy_parser_create(struct ivy_parser **parser) { struct ivy_parser *out = malloc(sizeof *out); if (!out) { return IVY_ERR_NO_MEMORY; } memset(out, 0x0, sizeof *out); *parser = out; return IVY_OK; } void ivy_parser_destroy(struct ivy_parser *parser) { free(parser); } enum ivy_status ivy_parser_get_status(struct ivy_parser *parser) { return parser->p_status; } struct ivy_ast_node *ivy_parser_read(struct ivy_parser *lex) { return NULL; } void ivy_ast_node_destroy(struct ivy_ast_node *node) { } #define ENUM_STR(x) \ case x: \ return #x const char *ivy_ast_node_type_to_string(enum ivy_ast_node_type v) { switch (v) { ENUM_STR(IVY_AST_NONE); ENUM_STR(IVY_AST_UNIT); ENUM_STR(IVY_AST_OP); ENUM_STR(IVY_AST_MSG); ENUM_STR(IVY_AST_CLASS); ENUM_STR(IVY_AST_MSGH); ENUM_STR(IVY_AST_PROPERTY); ENUM_STR(IVY_AST_LAMBDA); ENUM_STR(IVY_AST_UNIT_PACKAGE); ENUM_STR(IVY_AST_UNIT_IMPORT); ENUM_STR(IVY_AST_INT); ENUM_STR(IVY_AST_DOUBLE); ENUM_STR(IVY_AST_STRING); ENUM_STR(IVY_AST_FSTRING); ENUM_STR(IVY_AST_ATOM); ENUM_STR(IVY_AST_IDENT); ENUM_STR(IVY_AST_FOR_LOOP); ENUM_STR(IVY_AST_WHILE_LOOP); ENUM_STR(IVY_AST_COND_GROUP); ENUM_STR(IVY_AST_COND); ENUM_STR(IVY_AST_TUPLE); ENUM_STR(IVY_AST_DO); default: return ""; } } const char *ivy_ast_op_to_string(enum ivy_ast_op v) { switch (v) { ENUM_STR(IVY_OP_NONE); ENUM_STR(IVY_OP_ASSIGN); ENUM_STR(IVY_OP_ADD); ENUM_STR(IVY_OP_SUBTRACT); ENUM_STR(IVY_OP_MULTIPLY); ENUM_STR(IVY_OP_DIVIDE); ENUM_STR(IVY_OP_LESS_THAN); ENUM_STR(IVY_OP_GREATER_THAN); ENUM_STR(IVY_OP_EQUAL); ENUM_STR(IVY_OP_NOT_EQUAL); ENUM_STR(IVY_OP_LESS_EQUAL); ENUM_STR(IVY_OP_GREATER_EQUAL); ENUM_STR(IVY_OP_AND); ENUM_STR(IVY_OP_OR); ENUM_STR(IVY_OP_IS); ENUM_STR(IVY_OP_NOT); default: return ""; } } const char *ivy_ast_msgh_recipient_type_to_string(enum ivy_ast_msgh_recipient_type v) { switch (v) { ENUM_STR(IVY_AST_MSGH_NONE); ENUM_STR(IVY_AST_MSGH_OBJECT); ENUM_STR(IVY_AST_MSGH_CLASS); default: return ""; } }