@@ -37,6 +37,7 @@ import Data.List (List(..))
37
37
import Data.List as List
38
38
import Data.List.NonEmpty (NonEmptyList )
39
39
import Data.Maybe (Maybe (..), maybe )
40
+ import Data.Number (fromString )
40
41
import Data.String (CodePoint , null , toLower )
41
42
import Data.String.CodePoints (codePointFromChar )
42
43
import Data.String.CodeUnits (singleton , toChar ) as CodeUnits
@@ -48,6 +49,7 @@ import Text.Parsing.Parser (ParseState(..), ParserT, consume, fail)
48
49
import Text.Parsing.Parser.Combinators (between , choice , notFollowedBy , option , sepBy , sepBy1 , skipMany , skipMany1 , try , tryRethrow , (<?>), (<??>))
49
50
import Text.Parsing.Parser.Pos (Position )
50
51
import Text.Parsing.Parser.String (char , noneOf , oneOf , satisfy , satisfyCodePoint , string )
52
+ import Text.Parsing.Parser.String as Parser.String
51
53
52
54
-- | A parser which returns the first token in the stream.
53
55
token :: forall m a . Monad m => (a -> Position ) -> ParserT (List a ) m a
@@ -608,8 +610,14 @@ makeTokenParser (LanguageDef languageDef) =
608
610
natural = lexeme nat <?> " natural"
609
611
610
612
-- floats
613
+
611
614
floating :: ParserT String m Number
612
- floating = decimal >>= fractExponent
615
+ -- floating = decimal >>= fractExponent
616
+ floating = do
617
+ Tuple section _ <- Parser.String .match $ skipMany1 $ oneOf [ ' -' , ' .' , ' e' , ' 0' , ' 1' , ' 2' , ' 3' , ' 4' , ' 5' , ' 6' , ' 7' , ' 8' , ' 9' ]
618
+ case fromString section of
619
+ Nothing -> fail $ " Could not parse Number " <> section
620
+ Just x -> pure x
613
621
614
622
natFloat :: ParserT String m (Either Int Number )
615
623
natFloat = char ' 0' *> zeroNumFloat
0 commit comments