パーサーでIntsとfloatを区別しようとしています。私は各intとフロートのための2つのパーサーを持っています。しかし、私は '。'で失敗するのに苦労しています。私は否定を探して先を見て、そして果物を得るように見えなかった。Parsecそれが見つかった場合にエラーが発生しました
私は質問が重複しないことを願っています。
私は、 'ではない次の文字を見て作業していました。それは醜い解決策です。
EDIT:コードを追加しました。
--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----------------------------------------------------------------
'findInt'はどのように見えますか? – Alec
追加されました。申し訳ありませんが、私はコードを書くときには考えていませんでした。 –