Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "../lexertl14/include/lexertl/generator.hpp"
- #include "../lexertl14/include/lexertl/iterator.hpp"
- #include "../lexertl14/include/lexertl/lookup.hpp"
- #include <ostream>
- #include "../lexertl14/include/lexertl/match_results.hpp"
- #include <string>
- void lex()
- {
- @meta lexertl::rules rules;
- @meta lexertl::state_machine temp_sm;
- @meta rules.push("[a-z]+", 1);
- @meta rules.push("[0-9]+", 2);
- @meta rules.push(".", rules.skip());
- @meta lexertl::generator::build(rules, temp_sm);
- @meta std::vector<uint16_t> &lookup = temp_sm._internals._lookup[0];
- @meta std::vector<uint16_t> &dfa_alphabet = temp_sm._internals._dfa_alphabet;
- @meta std::vector<uint16_t> &dfa = temp_sm._internals._dfa[0];
- lexertl::state_machine sm;
- sm._internals._eoi = temp_sm._internals._eoi;
- sm._internals._lookup.emplace_back(std::vector<uint16_t>());
- sm._internals._lookup[0] = {@pack_nontype(lookup)...};
- sm._internals._dfa_alphabet = {@pack_nontype(dfa_alphabet)...};
- sm._internals._features = temp_sm._internals._features;
- sm._internals._dfa.emplace_back(std::vector<uint16_t>());
- sm._internals._dfa[0] = {@pack_nontype(dfa)...};
- std::string input = "123 abc 456 def";
- lexertl::citerator iter(input.c_str(), input.c_str() + input.size(), sm);
- lexertl::citerator end;
- for (; iter != end; ++iter)
- {
- std::cout << iter->id << ": " << iter->str() << '\n';
- }
- }
- int main(int argc, char** argv)
- {
- lex();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement