// 命令行参数解析: // - 解析输入/输出路径 // - 解析输出类型(IR/MIR/ASM)与优化级别等选项 // - 将参数传递给 main.cpp 的编译流水线驱动 #include "utils/CLI.h" #include #include #include CLIOptions ParseCLI(int argc, char** argv) { CLIOptions opt; if (argc <= 1) { throw std::runtime_error("用法: compiler [--help] "); } for (int i = 1; i < argc; ++i) { const char* arg = argv[i]; if (std::strcmp(arg, "-h") == 0 || std::strcmp(arg, "--help") == 0) { opt.show_help = true; return opt; } if (arg[0] == '-') { throw std::runtime_error(std::string("未知参数: ") + arg + "(使用 --help 查看用法)"); } if (!opt.input.empty()) { throw std::runtime_error( "参数过多:当前只支持 1 个输入文件(使用 --help 查看用法)"); } opt.input = arg; } if (opt.input.empty()) { throw std::runtime_error("缺少输入文件:请提供 (使用 --help 查看用法)"); } return opt; }