#include #include #include #include #include int main(int argc, char ** argv) { if (argc == 1) { std::cout << "Usage: psli [ options ] [ ... ]\n"; std::cout << "Available options:\n"; std::cout << " -t, --trace Trace each line of execution\n"; std::cout << " -d, --dump Dump all variables after processing each file\n"; return 0; } using namespace pslang; auto context = interpreter::empty_context(); bool dump = false; for (int arg = 1; arg < argc; ++arg) { if (std::strcmp(argv[arg], "-d") == 0 || std::strcmp(argv[arg], "--dump") == 0) { dump = true; continue; } if (std::strcmp(argv[arg], "-t") == 0 || std::strcmp(argv[arg], "--trace") == 0) { context.trace = true; continue; } auto ast = parser::parse(argv[arg]); interpreter::execute(context, ast); if (dump) interpreter::dump(std::cout, context); } }