git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #317 from garyb/negative-numbers

Negative number literals

commitca9adef2808c003ba35d7fece686669d777d47b6 authorPhil Freeman <paf31@cantab.net> dateTue 25 Mar 2014, 09:33 (13 years ago) parenta1657228030607
2 files changed+18−2
examples/passing/SignedNumericLiterals.purs+10 src/Language/PureScript/Parser/Common.hs+8−2
examples/passing/SignedNumericLiterals.pursnew file+10
@@ -0,0 +1,10 @@
1+module Main where
2+
3+ p = +0.5
4+ q = +1
5+ x = -1
6+ y = -0.5
7+ z = 0.5
8+ w = 1
9+
10+ main = Debug.Trace.trace "Done"
src/Language/PureScript/Parser/Common.hs+8−2
@@ -227,8 +227,14 @@ parseQualified parser = part []
227227-- Parse an integer or floating point value
228228--
229229integerOrFloat :: P.Parsec String u (Either Integer Double)
230−integerOrFloat = (Right <$> P.try (PT.float tokenParser) <|>
231− Left <$> P.try (PT.natural tokenParser)) P.<?> "number"
230+integerOrFloat = (Right <$> P.try (signed PT.float) <|>
231+ Left <$> P.try (signed PT.natural)) P.<?> "number"
232+ where
233+ signed p = do
234+ let sign = (P.char '-' >> return negate) <|> (optional (P.char '+') >> return id)
235+ f <- sign
236+ n <- p tokenParser
237+ return (f n)
232238
233239-- |
234240-- Parse an identifier or parenthesized operator