Ich gehe durch das Schreiben Sie sich ein Schema in 48 Stunden Tutorial.
%Vor%Das ist toll für Symbole, aber was ist, wenn ich eine Liste von Schlüsselwörtern habe? (d. h. struct, int)
kann oneOf an Listen angepasst werden? Das ist im Idealfall das, was ich möchte, unten abgebildet.
%Vor%Oder soll ich Text.Parsec.Char importieren und versuchen, M-String über die Liste der Schlüsselwörter zu mappen?
Ich versuche zu symbolisieren und wollte nur wissen, welche Best Practices von anderen stammen, die diesen Weg gegangen sind.
Die Dokumentation sagt etwas wie folgt zu verwenden:
%Vor% Die allgemeine Form davon ist Der choice
Kombinator , der den folgenden Typ hat:
Im Grunde geben Sie ihm eine Liste von Parsern, und er versucht sie, bis einer erfolgreich ist. choice
wird mit (<|>)
implementiert, also ist es dasselbe wie dieser Ansatz.
In Ihrem Fall können Sie, um einer Liste von Keywords, aber keinen anderen Parsern zu entsprechen, einfach string
über eine Liste von String
s zuordnen und dann choice
verwenden.
Auf der anderen Seite würde mapM string
etwas völlig anderes machen - es würde erwarten, dass alle der Parser in der richtigen Reihenfolge gelingen.