Float parser does not parse negative numbers
Swordlash opened this issue · 3 comments
Describe the bug
Token parser created by (makeTokenParser emptyDef).float does not parse negative numbers.
To Reproduce
In repl, import Text.Parsing.Parser, Text.Parsing.Parser.Language and Text.Parsing.Parser.Token.
Evaluate runParser "(-6.0)" (makeTokenParser emptyDef).float (parentheses don't matter).
Expected behavior
Right (-6.0)
Actual behavior
(Left (ParseError "Expected float" (Position { line: 1, column: 1 })))
Additional context
I think the parser should be able to parse negative numbers. integer parser already does. Perhaps add a sign-aware parser?
Yeah that sounds like a bug. Thank you very much for reporting.
Hi @Swordlash I hope #142 solves your problem. Please reopen this issue if it doesn't.
Hello @jamesdbrock,
This still seems to be an issue in the 10.2.0 version of the library.
That's probably because the float parser is implemented like this:
float :: ParserT String m Number
float = lexeme floating <?> "float"
floating :: ParserT String m Number
floating = decimal >>= fractExponentAnd decimal does not parse negative numbers, which is also mentioned in the comment.