Parser(typename Encode<E>::PointerType input, Automata& nfa) : reader(input) { nfa.clear(); if (reader.peek() == 0) { return; } auto ast = parseRE(); if (reader.peek() != 0) { throw ParseError(); } State s; State e; ast->convertToNFA(nfa, s, e); nfa.setStart(s); nfa.setTerminate(e); }