#include #include #include "asm.h" int assembler_init(struct assembler *asm, const char *path) { if (lexer_init(path, &asm->lexer)) return M_ERROR; if (parser_init(&asm->lexer, &asm->parser)) { lexer_free(&asm->lexer); return M_ERROR; } if (strtbl_init(&asm->shstr_tbl)) { parser_free(&asm->parser); lexer_free(&asm->lexer); return M_ERROR; } if (strtbl_init(&asm->str_tbl)) { strtbl_free(&asm->shstr_tbl); parser_free(&asm->parser); lexer_free(&asm->lexer); return M_ERROR; } asm->meta = NULL; return M_SUCCESS; } void assembler_free(struct assembler *asm) { strtbl_free(&asm->str_tbl); strtbl_free(&asm->shstr_tbl); parser_free(&asm->parser); lexer_free(&asm->lexer); free(asm->meta); }