www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

IKT

Gepostet:
12.08.2012 18:54

Parsen mit Parsec  
Hallo,

ich bin die ersten paar Überschriften aus diesem Tutorial ( http://legacy.cs.uu.nl/daan/download/parsec/parsec.html#UserGuide ) durchgegangen und wollte nun einen kleinen Parser schreiben, der bei einer Eingabe alle Leerzeichen ignoriert, und sonstige Zahlen nachher ausgibt sofern nicht irgendwo Buchstaben auftauchen.

import Text.ParserCombinators.Parsec
import Text.Parsec.Char
import Text.Parsec.Prim

sentence :: Parser [String]
sentence = do skipMany separator
sepBy1 number separator

separator :: Parser ()
separator = skipMany1 space

number :: Parser String
number = many1 digit

main = do s <- getLine
parseTest sentence s


Also z.B. bei der Eingabe \\\" 1 22 33\\\" wird \\\"[\\\"1\\\",\\\"22\\\",\\\"33\\\"]\\\" ausgegeben.
So weit so gut, nun möchte ich aber den Parser noch so verändern, dass bei Eingaben wie \\\"1a\\\" abgebrochen wird.
Bisher wird bei z.B. \\\"a1\\\" abgebrochen, da \\\"a\\\" kein \\\"digit\\\" ist, bei \\\"1a\\\" aber liest der Parser der für \\\"1a\\\" zuständig ist seine \\\"1\\\" ein und hat kein Problem, dass noch ein \\\"a\\\" nachfolgt, wegen \\\"many1 digit\\\".

Es wäre schön, wenn mir jemand helfen könnte-
Gruß IKT
Zum Seitenanfang