我想區分分析器中的Ints和浮點數。我有2個分析器,每個int和float。但是,我無法進入'。'。我尋找否定和展望未來,似乎並沒有得到和成果。Parsec如果發現匹配,然後拋出錯誤
我希望我不會重複任何問題。
我讓它看着下一個不是''的字符。但這是一個醜陋的解決方案。
編輯:增加了更多的代碼。
--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
已添加。抱歉,當我將代碼放好時,我並沒有想到。 –