function nfa_concat($nfa_list) { $out = new enfa(); $last_state = $out->initial; foreach ($nfa_list as $nfa) { $out->copy_in($nfa); $out->add_epsilon($last_state, $nfa->initial); $last_state = $nfa->final; } $out->add_epsilon($last_state, $out->final); return $out; }