#pragma once #include #include #include #include #include "Common.h" namespace NVL::Parse { enum class Type { Symbol, Number, String, Array, Subexpression }; class Object { public: Object() = delete; Object(const Number& v); Object(Type t, const String& v); Object(Type t, const std::vector& v); Object(Number&& v); Object(Type t, String&& v); Object(Type t, std::vector&& v); Type type; std::variant< Number, String, std::vector > value; }; using Command = std::vector; class Scene { String name; std::vector commands{}; public: Scene(const String& name) : name(name) {} void append(const Command& c) { commands.push_back(c); } void append(Command&& c) { commands.push_back(std::move(c)); } const auto& get() const { return commands; } }; std::vector ParseFile(const std::string& path); }