#ifndef UTILS_H #define UTILS_H #include #include #include #include class InterpretException : public std::exception { public: InterpretException() {} InterpretException(const char *message) : m_message(message) {} const char *what() const noexcept override { return m_message; } ~InterpretException() noexcept override {} private: const char *m_message; }; class FatalError : public std::exception { public: FatalError(const char *message) : m_message(message) {} const char *what() const noexcept override { return m_message; } private: const char *m_message; }; enum FlowControlStatusType { BREAK, CONTINUE, RETURN }; struct FlowType { FlowControlStatusType Status; // TODO: return lists std::vector ReturnValueLists; FlowType() {} FlowType(FlowControlStatusType Status) : Status(Status) {} FlowType(FlowControlStatusType Status, std::vector ReturnValueLists) : Status(Status), ReturnValueLists(ReturnValueLists) {} }; #endif