Wann kann eine mehrdeutige Analyse mit Lesevorgängen erfolgen?

9

Die Standard-Haskell-Klassen -Seite sagt Folgendes über reads :: (Read a) => String -> [(a,String)] :

  

Normalerweise gibt ein Parser eine Singleton-Liste mit einem Wert von zurück   Geben Sie a ein, das aus der Eingabezeichenfolge und der verbleibenden Zeichenfolge gelesen wurde   das folgt, was geparst wurde. Wenn jedoch kein Parsen möglich war,   Ergebnis ist die leere Liste, und wenn es mehr als eine mögliche Analyse gibt   (eine Ambiguität), die resultierende Liste enthält mehr als ein Paar.

Unter welchen Situationen oder Beispielen manifestiert sich diese Ambiguität?

    
Ana 18.02.2016, 06:36
quelle

1 Antwort

2
%Vor%

In diesem Beispiel versucht der Parser, Int und Double zu analysieren. Wenn es für beide analysiert werden kann, gibt der Parser zwei Werte zurück.

Ergebnis:

%Vor%

und

%Vor%

Der einfachste Weg, um Mehrdeutigkeiten zu beheben, besteht darin, einen Parse auszuwählen, indem Sie Auswahloperator +++ mit dem selektive Wahl <++ .

    
Vektorweg 19.02.2016, 01:44
quelle

Tags und Links