#pragma once #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 Vector& v); Object(Number&& v); Object(Type t, String&& v); Object(Type t, Vector&& v); Type type; std::variant< Number, String, Vector > value; }; using Command = Vector; class Scene { Vector commands{}; public: String name; 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; } }; Vector ParseFile(const std::string& path); }