J'essaie de distinguer entre Ints et flottants dans un analyseur. J'ai 2 parseurs un pour chaque int et float. Cependant, j'ai du mal à entrer dans un '.'. J'ai cherché négation et regarder en avant et n'a pas semblé obtenir et fruits.Parsec si un match trouvé, puis lancer l'erreur
J'espère ne pas avoir de questions. Je l'ai fait en regardant le prochain caractère qui n'est pas un '.' mais c'est une solution laide.
EDIT: Ajout de plus de code.
--Int--------------------------------------------------------------------
findInt :: Parser String
findInt = plus <|> minus <|> number
number :: Parser String
number = many1 digit
plus :: Parser String
plus = char '+' *> number
minus :: Parser String
minus = char '-' <:> number
makeInt :: Parser Int
makeInt = prepareResult (findInt <* many (noneOf ".") <* endOfLine)
where readInt = read :: String -> Int
prepareResult = liftA readInt
makeInt2 :: Parser Int
makeInt2 = do
numberFound <- (findInt <* many (noneOf ".") <* endOfLine)
match <- char '.'
return (prepareResult numberFound)
where readInt = read :: String -> Int
prepareResult = readInt
--End Int----------------------------------------------------------------
À quoi ressemble 'findInt' (aide simplement à avoir quelque chose au travail)? – Alec
Ajouté. Désolé je ne pensais pas quand j'ai mis le code. –