#pragma once #include #include "../parser/parser.h" /** * @class Executor * @brief Responsible for executing a sequence of operations defined in an abstract syntax tree (AST). * * This class provides execution functionality for ASTCodeBlock objects. * It maintains a mapping of variables and functions that can be used within the * context of execution. The class implements mechanisms for traversing AST nodes * and consuming or peeking at individual nodes. */ class Object { public: std::vector children; }; class Executor { private: std::map functions; std::map variables; ASTCodeBlock code; size_t iterator = 0; std::optional consume(); std::optional peek(int ahead = 1); public: explicit Executor(ASTCodeBlock in, bool isInitCall = false, std::map scopeVals = {}, std::map scopeFns = {}, std::vector args = {}); };