7 Stimmen

Ocaml - Zeichenkette zu (int*int*int) Liste

Ist in Ocaml-Funktion, die Zeichenfolge wie diese "[(1,2,3);(1,2,5);(2,3,4)]" in (int*int*int) Liste parsen kann? oder muss ich meine eigene Parsing-Funktion zu schreiben?

Gracias

Greg

4voto

akoprowski Punkte 3237

Nun, das sollte mit Hilfe der folgenden Informationen nicht allzu schwierig sein Scanf Modul aus der Standardbibliothek - Sie können die Tripel leicht scannen und müssen dann nur noch ein wenig Logik hinzufügen, um eine Liste zu parsen.

Alternativ können Sie auch einen Blick auf Ableitung :

Erweiterung von OCaml zur Ableitung von Funktionen aus Typdeklarationen. Enthält Derivate für Pretty-Printing, typsicheres Marshalling mit Struktur-Sharing, dynamische Typisierung, Gleichheit und mehr.

4voto

yzzlr Punkte 875

Wenn Sie bereit sind, ein etwas anderes Format zu verwenden, können Sie Ihren Parser kostenlos erhalten. Mit der sexplib-Syntaxerweiterung können Sie einfach schreiben:

type t = (int * int * int) list with sexp

und dies wird automatisch zwei Funktionen für Sie definieren, sexp_of_t y t_of_sexp . Sexplib bietet auch mehrere Parsing-Funktionen.

Die konkrete Syntax von s-Ausdrücken ist jedoch anders. Ihr Beispiel würde gerendert werden:

((1 2 3) (1 2 5) (2 3 4))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X