Skip to content

Commit 60f4abb

Browse files
committed
Merge pull request #26 from hdgarrood/warnings
Fix warnings
2 parents 608ba66 + dc05a8d commit 60f4abb

File tree

8 files changed

+86
-113
lines changed

8 files changed

+86
-113
lines changed

docs/Text/Parsing/Parser.md

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ A parsing error, consisting of a message and position information.
1111

1212
##### Instances
1313
``` purescript
14-
instance errorParseError :: Error ParseError
15-
instance showParseError :: Show ParseError
14+
Show ParseError
1615
```
1716

1817
#### `PState`
@@ -37,18 +36,18 @@ The first type argument is the stream type. Typically, this is either `String`,
3736

3837
##### Instances
3938
``` purescript
40-
instance functorParserT :: (Functor m) => Functor (ParserT s m)
41-
instance applyParserT :: (Monad m) => Apply (ParserT s m)
42-
instance applicativeParserT :: (Monad m) => Applicative (ParserT s m)
43-
instance altParserT :: (Monad m) => Alt (ParserT s m)
44-
instance plusParserT :: (Monad m) => Plus (ParserT s m)
45-
instance alternativeParserT :: (Monad m) => Alternative (ParserT s m)
46-
instance bindParserT :: (Monad m) => Bind (ParserT s m)
47-
instance monadParserT :: (Monad m) => Monad (ParserT s m)
48-
instance monadPlusParserT :: (Monad m) => MonadPlus (ParserT s m)
49-
instance monadTransParserT :: MonadTrans (ParserT s)
50-
instance monadStateParserT :: (Monad m) => MonadState s (ParserT s m)
51-
instance lazyParserT :: Lazy (ParserT s m a)
39+
(Functor m) => Functor (ParserT s m)
40+
(Monad m) => Apply (ParserT s m)
41+
(Monad m) => Applicative (ParserT s m)
42+
(Monad m) => Alt (ParserT s m)
43+
(Monad m) => Plus (ParserT s m)
44+
(Monad m) => Alternative (ParserT s m)
45+
(Monad m) => Bind (ParserT s m)
46+
(Monad m) => Monad (ParserT s m)
47+
(Monad m) => MonadPlus (ParserT s m)
48+
MonadTrans (ParserT s)
49+
(Monad m) => MonadState s (ParserT s m)
50+
Lazy (ParserT s m a)
5251
```
5352

5453
#### `unParserT`

docs/Text/Parsing/Parser/Pos.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ data Position
1414

1515
##### Instances
1616
``` purescript
17-
instance showPosition :: Show Position
18-
instance eqPosition :: Eq Position
17+
Show Position
18+
Eq Position
1919
```
2020

2121
#### `initialPos`

docs/Text/Parsing/Parser/String.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,15 @@ Skip whitespace characters.
6161
#### `oneOf`
6262

6363
``` purescript
64-
oneOf :: forall s m a. (Monad m) => Array Char -> ParserT String m Char
64+
oneOf :: forall m. (Monad m) => Array Char -> ParserT String m Char
6565
```
6666

6767
Match one of the characters in the array.
6868

6969
#### `noneOf`
7070

7171
``` purescript
72-
noneOf :: forall s m a. (Monad m) => Array Char -> ParserT String m Char
72+
noneOf :: forall m. (Monad m) => Array Char -> ParserT String m Char
7373
```
7474

7575
Match any character not in the array.

src/Text/Parsing/Parser.purs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,13 @@ import Prelude
44

55
import Data.Either
66
import Data.Identity
7-
import Data.Maybe
8-
import Data.Monoid
97
import Data.Tuple
108

119
import Control.Alt
1210
import Control.Alternative
1311
import Control.Lazy
14-
import Control.Monad
15-
import Control.Monad.Trans
16-
import Control.Monad.State.Class
17-
import Control.Monad.State.Trans
18-
import Control.Monad.Error.Class
19-
import Control.Monad.Except.Trans
12+
import Control.Monad.State.Class (MonadState)
13+
import Control.Monad.Trans (MonadTrans)
2014
import Control.MonadPlus
2115
import Control.Plus
2216

src/Text/Parsing/Parser/Combinators.purs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,13 @@ module Text.Parsing.Parser.Combinators where
2424
import Prelude
2525

2626
import Data.Maybe
27-
import Data.Tuple
2827
import Data.Either
2928
import Data.List (List(..), (:), many, some, singleton)
3029
import Data.Foldable (Foldable, foldl)
3130

3231
import Control.Alt
3332
import Control.Plus
34-
import Control.Alternative
3533
import Control.Apply
36-
import Control.Lazy
37-
import Control.Monad
38-
import Control.Monad.Error.Class
39-
import Control.Monad.State.Trans
40-
import Control.Monad.State.Class
4134

4235
import Text.Parsing.Parser
4336

src/Text/Parsing/Parser/Expr.purs

Lines changed: 66 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module Text.Parsing.Parser.Expr
1+
module Text.Parsing.Parser.Expr
22
( Assoc(..)
33
, Operator(..)
44
, OperatorTable()
@@ -7,7 +7,6 @@ module Text.Parsing.Parser.Expr
77

88
import Prelude
99

10-
import Data.Either
1110
import Data.Foldable
1211
import Data.List (List(..), (:))
1312

@@ -33,7 +32,7 @@ type SplitAccum m s a = { rassoc :: List (ParserT s m (a -> a -> a))
3332
-- | Build a parser from an `OperatorTable`.
3433
-- |
3534
-- | For example:
36-
-- |
35+
-- |
3736
-- | ```purescript
3837
-- | buildExprParser [ [ Infix (string "/" $> div) AssocRight ]
3938
-- | , [ Infix (string "*" $> mul) AssocRight ]
@@ -43,70 +42,68 @@ type SplitAccum m s a = { rassoc :: List (ParserT s m (a -> a -> a))
4342
-- | ```
4443
buildExprParser :: forall m s a. (Monad m) => OperatorTable m s a -> ParserT s m a -> ParserT s m a
4544
buildExprParser operators simpleExpr = foldl makeParser simpleExpr operators
46-
45+
46+
makeParser :: forall m s a. (Monad m) => ParserT s m a -> Array (Operator m s a) -> ParserT s m a
47+
makeParser term ops = do
48+
x <- termP prefixP term postfixP
49+
rassocP x rassocOp prefixP term postfixP
50+
<|> lassocP x lassocOp prefixP term postfixP
51+
<|> nassocP x nassocOp prefixP term postfixP
52+
<|> return x
53+
<?> "operator"
4754
where
48-
49-
makeParser :: ParserT s m a -> Array (Operator m s a) -> ParserT s m a
50-
makeParser term ops = do
51-
x <- termP prefixP term postfixP
52-
rassocP x rassocOp prefixP term postfixP
53-
<|> lassocP x lassocOp prefixP term postfixP
54-
<|> nassocP x nassocOp prefixP term postfixP
55-
<|> return x
56-
<?> "operator"
57-
where
58-
accum = foldr splitOp { rassoc: Nil
59-
, lassoc: Nil
60-
, nassoc: Nil
61-
, prefix: Nil
62-
, postfix: Nil
63-
} ops
64-
65-
rassocOp = choice accum.rassoc
66-
lassocOp = choice accum.lassoc
67-
nassocOp = choice accum.nassoc
68-
prefixOp = choice accum.prefix <?> ""
69-
postfixOp = choice accum.postfix <?> ""
70-
71-
postfixP = postfixOp <|> return id
72-
prefixP = prefixOp <|> return id
73-
74-
splitOp :: forall m s a. Operator m s a -> SplitAccum m s a -> SplitAccum m s a
75-
splitOp (Infix op AssocNone) accum = accum { nassoc = op : accum.nassoc }
76-
splitOp (Infix op AssocLeft) accum = accum { lassoc = op : accum.lassoc }
77-
splitOp (Infix op AssocRight) accum = accum { rassoc = op : accum.rassoc }
78-
splitOp (Prefix op) accum = accum { prefix = op : accum.prefix }
79-
splitOp (Postfix op) accum = accum { postfix = op : accum.postfix }
80-
81-
rassocP :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
82-
rassocP x rassocOp prefixP term postfixP = do
83-
f <- rassocOp
84-
y <- do
85-
z <- termP prefixP term postfixP
86-
rassocP1 z rassocOp prefixP term postfixP
87-
return (f x y)
88-
89-
rassocP1 :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
90-
rassocP1 x rassocOp prefixP term postfixP = rassocP x rassocOp prefixP term postfixP <|> return x
91-
92-
lassocP :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
93-
lassocP x lassocOp prefixP term postfixP = do
94-
f <- lassocOp
95-
y <- termP prefixP term postfixP
96-
lassocP1 (f x y) lassocOp prefixP term postfixP
97-
98-
lassocP1 :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
99-
lassocP1 x lassocOp prefixP term postfixP = lassocP x lassocOp prefixP term postfixP <|> return x
100-
101-
nassocP :: forall m a b c d e s. (Monad m) => a -> ParserT s m (a -> d -> e) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> d) -> ParserT s m e
102-
nassocP x nassocOp prefixP term postfixP = do
103-
f <- nassocOp
104-
y <- termP prefixP term postfixP
105-
return (f x y)
106-
107-
termP :: forall m s a b c. (Monad m) => ParserT s m (a -> b) -> ParserT s m a -> ParserT s m (b -> c) -> ParserT s m c
108-
termP prefixP term postfixP = do
109-
pre <- prefixP
110-
x <- term
111-
post <- postfixP
112-
return (post (pre x))
55+
accum = foldr splitOp { rassoc: Nil
56+
, lassoc: Nil
57+
, nassoc: Nil
58+
, prefix: Nil
59+
, postfix: Nil
60+
} ops
61+
62+
rassocOp = choice accum.rassoc
63+
lassocOp = choice accum.lassoc
64+
nassocOp = choice accum.nassoc
65+
prefixOp = choice accum.prefix <?> ""
66+
postfixOp = choice accum.postfix <?> ""
67+
68+
postfixP = postfixOp <|> return id
69+
prefixP = prefixOp <|> return id
70+
71+
splitOp :: forall m s a. Operator m s a -> SplitAccum m s a -> SplitAccum m s a
72+
splitOp (Infix op AssocNone) accum = accum { nassoc = op : accum.nassoc }
73+
splitOp (Infix op AssocLeft) accum = accum { lassoc = op : accum.lassoc }
74+
splitOp (Infix op AssocRight) accum = accum { rassoc = op : accum.rassoc }
75+
splitOp (Prefix op) accum = accum { prefix = op : accum.prefix }
76+
splitOp (Postfix op) accum = accum { postfix = op : accum.postfix }
77+
78+
rassocP :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
79+
rassocP x rassocOp prefixP term postfixP = do
80+
f <- rassocOp
81+
y <- do
82+
z <- termP prefixP term postfixP
83+
rassocP1 z rassocOp prefixP term postfixP
84+
return (f x y)
85+
86+
rassocP1 :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
87+
rassocP1 x rassocOp prefixP term postfixP = rassocP x rassocOp prefixP term postfixP <|> return x
88+
89+
lassocP :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
90+
lassocP x lassocOp prefixP term postfixP = do
91+
f <- lassocOp
92+
y <- termP prefixP term postfixP
93+
lassocP1 (f x y) lassocOp prefixP term postfixP
94+
95+
lassocP1 :: forall m a b c s. (Monad m) => a -> ParserT s m (a -> a -> a) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> a) -> ParserT s m a
96+
lassocP1 x lassocOp prefixP term postfixP = lassocP x lassocOp prefixP term postfixP <|> return x
97+
98+
nassocP :: forall m a b c d e s. (Monad m) => a -> ParserT s m (a -> d -> e) -> ParserT s m (b -> c) -> ParserT s m b -> ParserT s m (c -> d) -> ParserT s m e
99+
nassocP x nassocOp prefixP term postfixP = do
100+
f <- nassocOp
101+
y <- termP prefixP term postfixP
102+
return (f x y)
103+
104+
termP :: forall m s a b c. (Monad m) => ParserT s m (a -> b) -> ParserT s m a -> ParserT s m (b -> c) -> ParserT s m c
105+
termP prefixP term postfixP = do
106+
pre <- prefixP
107+
x <- term
108+
post <- postfixP
109+
return (post (pre x))

src/Text/Parsing/Parser/String.purs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,9 @@ import Prelude
77
import Data.String
88
import Data.Either
99
import Data.Foldable
10-
import Data.Monoid
1110
import Data.Maybe
1211
import Data.Char (toString)
1312
import Data.Array (many)
14-
import Data.List (List(..), (:), fromList)
15-
16-
import Control.Alt
17-
import Control.Alternative
18-
import Control.Monad.Error.Class
19-
import Control.Monad.State.Class
2013

2114
import Text.Parsing.Parser
2215
import Text.Parsing.Parser.Combinators

src/Text/Parsing/Parser/Token.purs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,13 @@ module Text.Parsing.Parser.Token where
44

55
import Prelude
66

7-
import Data.String
87
import Data.Either
9-
import Data.List (List(..), (:), many, some)
8+
import Data.List (List(..))
109

1110
import Control.Monad.State.Class hiding (get)
12-
import Control.Monad.Error.Class
1311
import Control.MonadPlus
1412

1513
import Text.Parsing.Parser
16-
import Text.Parsing.Parser.String
1714
import Text.Parsing.Parser.Combinators
1815
import Text.Parsing.Parser.Pos
1916

0 commit comments

Comments
 (0)