Estoy intentando escribir un analizador en Haskell usando Parsec. Actualmente tengo un programa que puede analizarAnalizador Haskell Parsec para encontrar [...]
test x [1,2,3] end
El código que hace esto se da como sigue
testParser = do {
reserved "test";
v <- identifier;
symbol "[";
l <- sepBy natural commaSep;
symbol "]";
p <- pParser;
return $ Test v (List l) p
} <?> "end"
donde commaSep se define como
commaSep = skipMany1 (space <|> char ',')
Ahora hay alguna manera para mí para analizar una declaración similar, específicamente:
test x [1...3] end
Al ser nuevo en Haskell, y en Parsec en este sentido, estoy seguro de que hay una forma bastante concisa de hacer esto que no conozco. Cualquier ayuda sería apreciada.
Gracias de nuevo.
¿El número de períodos debe ser constante o variable? ¿Se permiten espacios entre los números y los períodos, y entre los períodos? Por cierto, tu primer analizador coincide con 'test x [1,, 2, ,, 3] end'; tal vez eso no es lo que quieres. – dflemstr
El número de períodos debe ser constante, es decir, [1 ... 3] debe constar de exactamente 3 períodos para cualquier caso. Los espacios en blanco intermedios, como [1 ... 3], deben ignorarse. Espero que eso aclare lo que estoy buscando un poco más. –