Sollte ich ein Lexer verwenden, wenn ich eine Parser-Kombinator-Bibliothek wie Parsec verwende?

Wenn Sie einen Parser in eine Parser-Kombinator-Bibliothek wie Haskell's Parsec schreiben, haben Sie normalerweise zwei Möglichkeiten:

Schreiben Sie ein Lexer, um Ihr zu teilenString In Token eingeben und dann analysieren[Token]Schreiben Sie direkt Parser-Kombinatoren aufString

Die erste Methode erscheint oft sinnvoll, da viele Parsing-Eingaben als durch Leerzeichen getrennte Token verstanden werden können.

An anderen Orten habe ich Leute gesehen, die gegen das Tokenisieren (oderScannen oderlexen, wie manche es nennen), wobei die Einfachheit als Hauptgrund angeführt wird.

Was sind allgemeine Kompromisse zwischen dem Lexen und dem Nicht-Tun?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage