Im streng formalen Sinne nein. Nichtdeterminismus im theoretischen / mathematischen Sinne ermöglicht es einer Maschine, einen Berechnungspfad basierend darauf zu wählen, ob er schließlich zu einem akzeptierenden Zustand führt oder nicht, ohne in der Eingabe weiter nach vorne zu schauen . In diesem strengen Sinne handelt es sich also um eine Eigenschaft, die nur für theoretische Untersuchungen geeignet ist, und es gibt keine echte nicht deterministische Maschine. Insbesondere in diesem Fall können Sie keine NFA erstellen, es sei denn, Sie können in die Zukunft sehen In diesem Fall ist das Erstellen eines Compilers mit diesem Talent eine Verschwendung! ;).
Nichtdeterministisch und Nichtdeterminismus werden jedoch häufig in einem schwächeren, verschwommen definierten Sinne verwendet. Manchmal kann es randomisiert / probabilistisch bedeuten - der Algorithmus wirft eine Münze, in einer formalen Umgebung wird dies als probabilistischer / randomisierter Algorithmus untersucht und nicht als Nichtdeterminismus bezeichnet. Eine andere Verwendung ist ein Algorithmus, der bei zwei Läufen mit derselben Eingabe nicht unbedingt dieselbe Ausgabe erzeugt - er ist möglicherweise nicht zufällig, aber ein Teil seines Verhaltens ist nicht spezifiziert, sodass möglicherweise mehrere gültige Ausgaben vorliegen (ich persönlich denke dies Definition stammt aus verwirrend kommt un -determined und nicht -deterministic.
Trotzdem könnten Sie im Prinzip einen Lexer bauen, der in einem dieser schwächeren, informellen Sinne nicht deterministisch ist, aber es wäre kein NFA (das ist ein striktes formales Maschinenmodell), und ich kann mir nicht vorstellen, dass es ein Absturz sein würde heiße Idee auch - ein Lexer muss ziemlich vorhersehbar sein.
Die letzte Option besteht darin, dass Sie Nichtdeterminismus durch Backtracking oder Parallelität simulieren können. In diesem Fall verlieren Sie jedoch die offensichtliche Effizienz des Nichtdeterminismus, da Sie ihn effektiv in eine deterministische Berechnung umwandeln, sodass Sie nicht besser sind aus als mit einem DFA.