#pragma once #include #include #include #include #include "node.h" #include "parserstate.h" namespace YAML { class Node; class Scanner; class Parser { public: Parser(std::istream& in); ~Parser(); operator bool() const; void GetNextDocument(Node& document); void PrintTokens(std::ostream& out); private: void ParseDirectives(); void HandleDirective(const std::string& name, const std::vector & params); void HandleYamlDirective(const std::vector & params); void HandleTagDirective(const std::vector & params); private: Scanner *m_pScanner; ParserState m_state; }; }