19 std::pair<bool, std::string> get_init_error();
20 const std::string &get_code()
const;
21 std::pair<bool, std::string> set_code(
const std::string &s);
23 std::pair<bool, std::string> run(
const ParameterSet &pset = {});
25 static bool stack_pop(std::deque<int64_t> &stack, int64_t &va);
30 enum class Type { INT, CMD, STR,
UUID };
31 Token(Type ty) : type(ty)
41 virtual std::unique_ptr<Token> clone()
const = 0;
52 std::unique_ptr<Token> clone()
const override 54 return std::make_unique<TokenInt>(*this);
66 std::transform(other.arguments.begin(), other.arguments.end(), std::back_inserter(arguments),
67 [](
auto &x) {
return x->clone(); });
70 const std::string command;
71 std::deque<std::unique_ptr<Token>> arguments;
73 std::unique_ptr<Token> clone()
const override 75 return std::make_unique<TokenCommand>(*this);
85 const std::string string;
87 std::unique_ptr<Token> clone()
const override 89 return std::make_unique<TokenString>(*this);
95 TokenUUID(
const std::string &str) :
Token(Token::Type::UUID), string(str)
99 const std::string string;
101 std::unique_ptr<Token> clone()
const override 103 return std::make_unique<TokenUUID>(*this);
106 using CommandHandler =
107 std::function<std::pair<bool, std::string>(
const TokenCommand *cmd, std::deque<int64_t> &stack)>;
108 virtual CommandHandler get_command(
const std::string &cmd);
112 std::pair<bool, std::string> compile();
113 std::pair<bool, std::string> init_error = {
false,
""};
115 std::deque<std::unique_ptr<Token>> tokens;
Definition: program.hpp:28
Definition: program.hpp:79
Definition: program.hpp:12
Definition: program.hpp:44
Definition: program.cpp:57
Definition: program.hpp:93
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
Definition: program.hpp:58