diff options
author | Roland Reichwein <mail@reichwein.it> | 2020-01-21 22:49:30 +0100 |
---|---|---|
committer | Roland Reichwein <mail@reichwein.it> | 2020-01-21 22:49:30 +0100 |
commit | f4b2027868c9733bbbbcb4c5ec6d5462a8447e5d (patch) | |
tree | 40ce459f1a501d6c88936c78f6dbcbb8aadd04ca /bnf.cpp | |
parent | 08997620fd617b580c1adbcb03c90cf621aa7069 (diff) |
Separate to cpp files
Diffstat (limited to 'bnf.cpp')
-rw-r--r-- | bnf.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -0,0 +1,21 @@ +#include "bnf.h" + +std::map<std::string, std::set<std::string>> Reverse(BNF bnf){ + std::map<std::string, std::set<std::string>> result; + + for (const auto& [from, to] : bnf) { + for (const auto& list : to) { + for (const auto& element : list) { + auto i{result.find(element)}; + if (i != result.end()) // already present + i->second.insert(from); + else // new element + result.emplace(element, std::set{from}); + } + } + } + + return result; +} + + |