| #include <fstream> | |
| #include <iostream> | |
| #include <vector> | |
| #include "yaml-cpp/eventhandler.h" | |
| #include "yaml-cpp/yaml.h" // IWYU pragma: keep | |
| class NullEventHandler : public YAML::EventHandler { | |
| public: | |
| void OnDocumentStart(const YAML::Mark&) override {} | |
| void OnDocumentEnd() override {} | |
| void OnNull(const YAML::Mark&, YAML::anchor_t) override {} | |
| void OnAlias(const YAML::Mark&, YAML::anchor_t) override {} | |
| void OnScalar(const YAML::Mark&, const std::string&, YAML::anchor_t, | |
| const std::string&) override {} | |
| void OnSequenceStart(const YAML::Mark&, const std::string&, YAML::anchor_t, | |
| YAML::EmitterStyle::value) override {} | |
| void OnSequenceEnd() override {} | |
| void OnMapStart(const YAML::Mark&, const std::string&, YAML::anchor_t, | |
| YAML::EmitterStyle::value) override {} | |
| void OnMapEnd() override {} | |
| }; | |
| void parse(std::istream& input) { | |
| try { | |
| YAML::Node doc = YAML::Load(input); | |
| std::cout << doc << "\n"; | |
| } catch (const YAML::Exception& e) { | |
| std::cerr << e.what() << "\n"; | |
| } | |
| } | |
| int main(int argc, char** argv) { | |
| if (argc > 1) { | |
| std::ifstream fin; | |
| fin.open(argv[1]); | |
| parse(fin); | |
| } else { | |
| parse(std::cin); | |
| } | |
| return 0; | |
| } |