Sto tentando di scrivere un parser in Haskell usando Parsec. Attualmente ho un programma in grado di analizzareHaskell Parsec Parser per l'incontro [...]
test x [1,2,3] end
Il codice che fa questo è dato come segue
testParser = do {
reserved "test";
v <- identifier;
symbol "[";
l <- sepBy natural commaSep;
symbol "]";
p <- pParser;
return $ Test v (List l) p
} <?> "end"
dove commaSep è definito come
commaSep = skipMany1 (space <|> char ',')
Ora c'è qualche modo per me per analizzare una dichiarazione simile, in particolare:
test x [1...3] end
Essendo nuovo per Haskell e per Parsec, sono sicuro che c'è un modo molto semplice per farlo, di cui non sono a conoscenza. Qualsiasi aiuto sarebbe apprezzato.
Grazie ancora.
Il numero di periodi deve essere costante o variabile? Gli spazi sono consentiti tra i numeri e i periodi e tra i periodi? A proposito, il tuo primo parser corrisponde a 'test x [1,, 2, ,, 3] fine'; forse non è quello che vuoi. – dflemstr
Il numero di periodi dovrebbe essere costante, vale a dire [1 ... 3] dovrebbe consistere esattamente di 3 periodi per ogni caso. Gli spazi bianchi tra cui [1 ... 3] dovrebbero essere ignorati. Spero che questo chiarisca cosa sto cercando un po 'di più. –