2017-05-10 3 views

Antwort

4

Problem ist wirklich in unendlicher Rekursion. Ihr ast Parser ruft zuerst operation Parser auf. Aber dann ruft operation Parser ast wieder zurück. Und so weiter. <*> Operator zum Parsen läuft auch Parser. Erklärung des Unterschieds von <|> in sehr informellen Art und Weise: <*> läuft Parser in Reihenfolge nacheinander, ob <|> ersten Parser läuft und nur, wenn es fehlschlägt, läuft Sekunde.

operation = Operation <$> ast <*> operator <*> ast 
ast  = operation <|> number <|> identifier 

Grundsätzlich, auch mit Umsortieren Parser Ihre Arbeitsweise wird nicht funktionieren. Finden Sie diese Antwort auf ähnliche Frage zur Erklärung: Megaparsec: Not able to parse arithmetic string

Verwandte Themen