+ return !parser->errors;
+}
+
+void parser_cleanup()
+{
+ size_t i;
+ for (i = 0; i < parser->functions_count; ++i) {
+ ast_delete(parser->functions[i]);
+ }
+ for (i = 0; i < parser->imm_vector_count; ++i) {
+ ast_delete(parser->imm_vector[i]);
+ }
+ for (i = 0; i < parser->imm_string_count; ++i) {
+ ast_delete(parser->imm_string[i]);
+ }
+ for (i = 0; i < parser->imm_float_count; ++i) {
+ ast_delete(parser->imm_float[i]);
+ }
+ for (i = 0; i < parser->globals_count; ++i) {
+ ast_delete(parser->globals[i]);
+ }
+ MEM_VECTOR_CLEAR(parser, globals);
+
+ mem_d(parser);
+}
+
+bool parser_finish(const char *output)
+{
+ size_t i;
+ ir_builder *ir;
+