diff --git a/frontend/cmd/assemble.c b/frontend/cmd/assemble.c index 272c35a..cd470e2 100644 --- a/frontend/cmd/assemble.c +++ b/frontend/cmd/assemble.c @@ -1,10 +1,10 @@ #include "../debug.h" #include "cmd.h" +#include #include #include #include -#include #include #include #include @@ -87,7 +87,7 @@ static int assemble_file(const char *in_path, const char *out_path) if (status != IVY_OK) { fx_err("failed to parse '%s'", in_path); fx_i("reason: lex error (%s)", - ivy_status_to_string(ivy_asm_lexer_get_status(lex))); + ivy_status_to_string(ivy_asm_lexer_get_status(lex))); break; } @@ -97,7 +97,7 @@ static int assemble_file(const char *in_path, const char *out_path) if (status != IVY_OK) { fx_err("failed to parse '%s'", in_path); fx_i("reason: parse error (%s)", - ivy_status_to_string(status)); + ivy_status_to_string(status)); break; } } @@ -155,7 +155,8 @@ static fx_string *generate_object_filename(const char *src_filename) return name; } -static int assemble(const fx_command *cmd, const fx_arglist *args, const fx_array *_) +static int assemble( + const fx_command *cmd, const fx_arglist *args, const fx_array *_) { const char *in_path = NULL; const char *out_path = NULL; @@ -229,7 +230,7 @@ static int assemble(const fx_command *cmd, const fx_arglist *args, const fx_arra return 0; } -B_COMMAND(CMD_ASSEMBLE, CMD_ROOT) +FX_COMMAND(CMD_ASSEMBLE, CMD_ROOT) { FX_COMMAND_NAME("assemble"); FX_COMMAND_SHORT_NAME('A'); diff --git a/frontend/cmd/compile.c b/frontend/cmd/compile.c index 3107397..30bbb63 100644 --- a/frontend/cmd/compile.c +++ b/frontend/cmd/compile.c @@ -1,11 +1,10 @@ #include "../debug.h" #include "cmd.h" -#include "mie/select/builder.h" +#include #include #include #include -#include #include #include #include @@ -15,11 +14,6 @@ #include #include #include -#include -#include -#include -#include -#include #include enum { @@ -51,7 +45,6 @@ struct compile_ctx { struct ivy_codegen *codegen; struct mie_ctx *mie_ctx; - struct mie_select_builder *select; struct mie_module *mod; }; @@ -92,8 +85,10 @@ static fx_result compile_ctx_init(struct compile_ctx *ctx, const fx_arglist *arg ivy_status = ivy_lexer_create(&ctx->lex); ivy_status = ivy_parser_create(&ctx->parser); ivy_status = ivy_codegen_create(ctx->mie_ctx, &ctx->codegen); +#if 0 ctx->select = mie_select_builder_create(ctx->mie_ctx, ivy_asm_mie_target()); +#endif ivy_lang_diag_ctx_init(ctx->diag); ivy_diag_stream_init_tty(&ctx->diag_stream, fx_stdtty); @@ -105,9 +100,11 @@ static fx_result compile_ctx_init(struct compile_ctx *ctx, const fx_arglist *arg static fx_result compile_ctx_cleanup(struct compile_ctx *ctx) { +#if 0 if (ctx->mod) { mie_value_destroy(MIE_VALUE(ctx->mod)); } +#endif if (ctx->src) { ivy_diag_ctx_set_line_source(ctx->diag, NULL); @@ -115,9 +112,11 @@ static fx_result compile_ctx_cleanup(struct compile_ctx *ctx) ivy_file_close(ctx->src); } +#if 0 if (ctx->select) { mie_select_builder_destroy(ctx->select); } +#endif if (ctx->codegen) { ivy_codegen_destroy(ctx->codegen); @@ -135,9 +134,11 @@ static fx_result compile_ctx_cleanup(struct compile_ctx *ctx) ivy_diag_ctx_destroy(ctx->diag); } +#if 0 if (ctx->mie_ctx) { mie_ctx_destroy(ctx->mie_ctx); } +#endif return FX_RESULT_SUCCESS; } @@ -226,6 +227,7 @@ static fx_result generate_mie_ir(struct compile_ctx *ctx) return FX_RESULT_SUCCESS; } +#if 0 static fx_result build_block_isel_graph( struct compile_ctx *ctx, struct mie_func *func, struct mie_block *block) { @@ -307,6 +309,7 @@ static fx_result build_isel_graph(struct compile_ctx *ctx) return FX_RESULT_SUCCESS; } +#endif static fx_result dump_ast(struct compile_ctx *ctx) { @@ -323,6 +326,7 @@ static fx_result dump_ast(struct compile_ctx *ctx) static fx_result dump_ir(struct compile_ctx *ctx) { +#if 0 struct mie_ir_converter *convert = mie_ir_converter_create(ctx->mie_ctx, MIE_IR_MEM, MIE_IR_TEXT); mie_ir_converter_set_src_value(convert, MIE_VALUE(ctx->mod)); @@ -330,21 +334,22 @@ static fx_result dump_ir(struct compile_ctx *ctx) mie_ir_converter_process(convert); mie_ir_converter_destroy(convert); +#endif return FX_RESULT_SUCCESS; } static int compile_file(const char *path, const fx_arglist *args) { -#define THROW_AND_RETURN(result, error_code) \ - do { \ +#define THROW_AND_RETURN(result, error_code) \ + do { \ if (fx_result_is(result, IVY_ERROR_VENDOR, IVY_ERR_BAD_SYNTAX)) { \ - return error_code; \ - } \ + return error_code; \ + } \ if (fx_result_is_error(result)) { \ fx_throw(result); \ - return error_code; \ - } \ + return error_code; \ + } \ } while (0) struct compile_ctx ctx; @@ -383,12 +388,14 @@ static int compile_file(const char *path, const fx_arglist *args) return 0; } +#if 0 result = build_isel_graph(&ctx); THROW_AND_RETURN(result, -1); if (progress == 3) { return 0; } +#endif end: compile_ctx_cleanup(&ctx); @@ -416,7 +423,7 @@ static int compile(const fx_command *cmd, const fx_arglist *args, const fx_array return 0; } -B_COMMAND(CMD_COMPILE, CMD_ROOT) +FX_COMMAND(CMD_COMPILE, CMD_ROOT) { FX_COMMAND_NAME("compile"); FX_COMMAND_SHORT_NAME('C'); diff --git a/frontend/cmd/disassemble.c b/frontend/cmd/disassemble.c index 04ced65..1d34e4b 100644 --- a/frontend/cmd/disassemble.c +++ b/frontend/cmd/disassemble.c @@ -1,10 +1,10 @@ #include "cmd.h" +#include +#include #include #include #include -#include -#include #include #include #include @@ -305,7 +305,8 @@ static enum ivy_status dump_class( printf("type:variable\n"); struct ivy_asm_constpool_value *var_ident = NULL; status = ivy_asm_constpool_reader_read_value( - pool, fx_i32_btoh(entry.e_mvar.m_ident), &var_ident); + pool, fx_i32_btoh(entry.e_mvar.m_ident), + &var_ident); if (status != IVY_OK) { break; } @@ -654,17 +655,20 @@ static int disassemble( bool header = fx_arglist_get_count(args, OPT_HEADER, FX_COMMAND_INVALID_ID) > 0; bool sections - = fx_arglist_get_count(args, OPT_SECTIONS, FX_COMMAND_INVALID_ID) > 0; + = fx_arglist_get_count(args, OPT_SECTIONS, FX_COMMAND_INVALID_ID) + > 0; bool dump = fx_arglist_get_count(args, OPT_DUMP, FX_COMMAND_INVALID_ID) > 0; bool constpool = fx_arglist_get_count(args, OPT_CONSTPOOL, FX_COMMAND_INVALID_ID) > 0; bool classes - = fx_arglist_get_count(args, OPT_CLASSES, FX_COMMAND_INVALID_ID) > 0; + = fx_arglist_get_count(args, OPT_CLASSES, FX_COMMAND_INVALID_ID) + > 0; const char *in_path = NULL; - fx_arglist_get_string(args, FX_COMMAND_INVALID_ID, ARG_BIN_FILE, 0, &in_path); + fx_arglist_get_string( + args, FX_COMMAND_INVALID_ID, ARG_BIN_FILE, 0, &in_path); if (!in_path) { fx_err("no input file specified."); return -1; @@ -717,7 +721,7 @@ static int disassemble( return 0; } -B_COMMAND(CMD_DISASSEMBLE, CMD_ROOT) +FX_COMMAND(CMD_DISASSEMBLE, CMD_ROOT) { FX_COMMAND_NAME("disassemble"); FX_COMMAND_SHORT_NAME('D'); diff --git a/frontend/cmd/exec.c b/frontend/cmd/exec.c index 32847bb..fa1c326 100644 --- a/frontend/cmd/exec.c +++ b/frontend/cmd/exec.c @@ -11,7 +11,7 @@ static int exec(const fx_command *cmd, const fx_arglist *args, const fx_array *_ return 0; } -B_COMMAND(CMD_ROOT, FX_COMMAND_INVALID_ID) +FX_COMMAND(CMD_ROOT, FX_COMMAND_INVALID_ID) { FX_COMMAND_NAME("ivy"); FX_COMMAND_DESC("evaluate an Ivy source file or Ivy object file."); diff --git a/frontend/cmd/internal.c b/frontend/cmd/internal.c index 120329d..242ef9c 100644 --- a/frontend/cmd/internal.c +++ b/frontend/cmd/internal.c @@ -1,22 +1,24 @@ -#include #include "cmd.h" -#include -#include + +#include #include +#include +#include enum { OPT_PRINT_SYMBOLS = 0x1000, OPT_PRINT_KEYWORDS, }; -static int internal(const fx_command *cmd, const fx_arglist *args, const fx_array *_) +static int internal( + const fx_command *cmd, const fx_arglist *args, const fx_array *_) { struct ivy_lexer *lex; enum ivy_status status = ivy_lexer_create(&lex); - + if (status != IVY_OK) { fx_err("failed to initialise lexer (error %s)", - ivy_status_to_string(status)); + ivy_status_to_string(status)); return -1; } @@ -33,7 +35,7 @@ static int internal(const fx_command *cmd, const fx_arglist *args, const fx_arra return 0; } -B_COMMAND(CMD_INTERNAL, CMD_ROOT) +FX_COMMAND(CMD_INTERNAL, CMD_ROOT) { FX_COMMAND_NAME("internal"); FX_COMMAND_SHORT_NAME('X'); @@ -53,7 +55,8 @@ B_COMMAND(CMD_INTERNAL, CMD_ROOT) FX_OPTION_LONG_NAME("print-keywords"); FX_OPTION_SHORT_NAME('k'); FX_OPTION_DESC( - "print the keyword dictionary used by the language lexer."); + "print the keyword dictionary used by the language " + "lexer."); } FX_COMMAND_HELP_OPTION(); diff --git a/frontend/cmd/repl.c b/frontend/cmd/repl.c index e74b0cf..b76f699 100644 --- a/frontend/cmd/repl.c +++ b/frontend/cmd/repl.c @@ -8,8 +8,6 @@ #include #include #include -#include -#include #include #include #include @@ -27,7 +25,10 @@ struct repl { struct ivy_lexer *r_lex; struct ivy_parser *r_parse; struct ivy_codegen *r_codegen; + +#if 0 struct mie_ir_converter *r_converter; +#endif }; static void skip_line(struct ivy_lexer *lex) @@ -89,17 +90,21 @@ static int repl_eval_node(struct repl *repl, struct ivy_ast_node *node) ivy_codegen_push_eof(repl->r_codegen); struct mie_module *mod = ivy_codegen_get_current_module(repl->r_codegen); +#if 0 mie_ir_converter_set_src_value(repl->r_converter, MIE_VALUE(mod)); mie_ir_converter_process(repl->r_converter); +#endif return 0; } static void repl_destroy(struct repl *repl) { +#if 0 if (repl->r_converter) { mie_ir_converter_destroy(repl->r_converter); } +#endif if (repl->r_codegen) { ivy_codegen_destroy(repl->r_codegen); @@ -117,9 +122,11 @@ static void repl_destroy(struct repl *repl) line_ed_destroy(repl->r_ed); } +#if 0 if (repl->r_mie) { mie_ctx_destroy(repl->r_mie); } +#endif free(repl); } @@ -167,6 +174,7 @@ static enum ivy_status repl_create(struct repl **out) return status; } +#if 0 repl->r_converter = mie_ir_converter_create(repl->r_mie, MIE_IR_MEM, MIE_IR_TEXT); if (!repl->r_converter) { @@ -175,6 +183,7 @@ static enum ivy_status repl_create(struct repl **out) } mie_ir_converter_set_dest_file(repl->r_converter, stdout); +#endif *out = repl; return IVY_OK; @@ -217,7 +226,8 @@ int repl(const fx_command *cmd, const fx_arglist *args, const fx_array *_) args, OPT_SHOW_AST_NODES, FX_COMMAND_INVALID_ID) > 0; repl->r_show_ir - = fx_arglist_get_count(args, OPT_SHOW_IR, FX_COMMAND_INVALID_ID) > 0; + = fx_arglist_get_count(args, OPT_SHOW_IR, FX_COMMAND_INVALID_ID) + > 0; while (true) { struct ivy_token *tok = ivy_lexer_read(repl->r_lex); @@ -228,8 +238,8 @@ int repl(const fx_command *cmd, const fx_arglist *args, const fx_array *_) if (status != IVY_OK) { fx_err("lex error (%s)", - ivy_status_to_string( - ivy_lexer_get_status(repl->r_lex))); + ivy_status_to_string( + ivy_lexer_get_status(repl->r_lex))); continue; } @@ -257,7 +267,7 @@ int repl(const fx_command *cmd, const fx_arglist *args, const fx_array *_) repl_eval_node(repl, unit); ivy_codegen_end_module(repl->r_codegen, &mod); - mie_value_destroy(MIE_VALUE(mod)); + // mie_value_destroy(MIE_VALUE(mod)); #if 0 while ((child = ivy_parser_dequeue_node(repl->r_parse))) { @@ -271,7 +281,7 @@ int repl(const fx_command *cmd, const fx_arglist *args, const fx_array *_) return 0; } -B_COMMAND(CMD_REPL, CMD_ROOT) +FX_COMMAND(CMD_REPL, CMD_ROOT) { FX_COMMAND_NAME("shell"); FX_COMMAND_SHORT_NAME('S');