#pragma once #include #include "cmd/cmd_base.hpp" #include "fsh.hpp" #include "ast/ast.hpp" namespace fsh { class CmdExit : public Command { protected: virtual void run(std::istream& in, std::ostream& out, ArgManager& args) override { fsh::instance().environment["EXITING"] = "1"; } }; class CmdPrintTree : public Command { protected: virtual void register_flags() override { auto& factory = get_factory(); factory.add_input_rule(); } virtual void run(std::istream& in, std::ostream& out, ArgManager& args) override { std::string line; std::getline(in, line); auto tokens = Lexer::process(line); auto ast = AstFactory::generate_ast(tokens); ast->print(0); } }; }