#include "Node.hpp" namespace wg { /*explicit*/ Node::Node(NodeType type, std::string const& repr, Loc const& loc) : m_type { type } , m_repr { repr } , m_loc { loc } { } /*virtual*/ Node::~Node() { } void Node::add_child(std::shared_ptr child) { m_children.push_back(child); } std::shared_ptr Node::child(size_t index) const { WG_ASSERT(index < size(), "aze"); return m_children.at(index); } std::string Node::string() const { std::stringstream ss; ss << (NodeTypeStr[m_type] + strlen("NODE_")); if (!m_repr.empty()) { ss << "[" << m_repr << "]"; } if (size() > 0) { ss << "("; std::string sep; for (auto child: m_children) { ss << sep << child->string(); sep = ","; } ss << ")"; } return ss.str(); } }