toNfa method

  1. @override
Nfa toNfa()
override

Compiles this AST node into a nondeterministic finite automaton (Nfa).

Implementation

@override
Nfa toNfa() {
  final childNfa = child.toNfa();
  final accepted = _collectAcceptedCodePoints(childNfa);

  final start = NfaState(isEnd: false);
  final end = NfaState(isEnd: true);
  for (var i = 0; i <= 0xffff; i++) {
    if (!accepted.contains(i)) {
      start.transitions[i] = end;
    }
  }
  return Nfa(start: start, end: end);
}