@@ -6,9 +6,10 @@ import Data.Either
66
77import Debug.Trace
88
9+ import Control.Alt
910import Control.Monad.Eff
1011
11- import Text.Parsing.StringParser
12+ import Text.Parsing.StringParser
1213import Text.Parsing.StringParser.Combinators
1314import Text.Parsing.StringParser.String
1415import Text.Parsing.StringParser.Expr
@@ -19,38 +20,38 @@ parens :: forall a. Parser a -> Parser a
1920parens = between (string " (" ) (string " )" )
2021
2122nested :: Parser Number
22- nested = fix $ \p -> (do
23+ nested = fix $ \p -> (do
2324 string " a"
2425 return 0 ) <|> ((+) 1 ) <$> parens p
2526
26- parseTest :: forall a eff . (Show a ) => Parser a -> String -> Eff (trace :: Trace | eff ) { }
27+ parseTest :: forall a eff . (Show a ) => Parser a -> String -> Eff (trace :: Trace | eff ) Unit
2728parseTest p input = case runParser p input of
2829 Left (ParseError err) -> print err
2930 Right result -> print result
3031
3132opTest :: Parser String
32- opTest = chainl anyChar (do
33+ opTest = chainl anyChar (do
3334 string " +"
3435 return (++)) " "
35-
36+
3637digit :: Parser Number
37- digit = (string " 0" >>= \_ -> return 0 )
38- <|> (string " 1" >>= \_ -> return 1 )
39- <|> (string " 2" >>= \_ -> return 2 )
40- <|> (string " 3" >>= \_ -> return 3 )
41- <|> (string " 4" >>= \_ -> return 4 )
42- <|> (string " 5" >>= \_ -> return 5 )
43- <|> (string " 6" >>= \_ -> return 6 )
44- <|> (string " 7" >>= \_ -> return 7 )
45- <|> (string " 8" >>= \_ -> return 8 )
46- <|> (string " 9" >>= \_ -> return 9 )
38+ digit = (string " 0" >>= \_ -> return 0 )
39+ <|> (string " 1" >>= \_ -> return 1 )
40+ <|> (string " 2" >>= \_ -> return 2 )
41+ <|> (string " 3" >>= \_ -> return 3 )
42+ <|> (string " 4" >>= \_ -> return 4 )
43+ <|> (string " 5" >>= \_ -> return 5 )
44+ <|> (string " 6" >>= \_ -> return 6 )
45+ <|> (string " 7" >>= \_ -> return 7 )
46+ <|> (string " 8" >>= \_ -> return 8 )
47+ <|> (string " 9" >>= \_ -> return 9 )
4748
4849exprTest :: Parser Number
4950exprTest = buildExprParser [[Infix (string " /" >>= \_ -> return (/)) AssocRight ]
5051 ,[Infix (string " *" >>= \_ -> return (*)) AssocRight ]
5152 ,[Infix (string " -" >>= \_ -> return (-)) AssocRight ]
5253 ,[Infix (string " +" >>= \_ -> return (+)) AssocRight ]] digit
53-
54+
5455tryTest :: Parser String
5556tryTest = try ((++) <$> string " aa" <*> string " bb" ) <|>
5657 (++) <$> string " aa" <*> string " cc"
@@ -65,7 +66,7 @@ main = do
6566 parseTest (do
6667 as <- string " a" `endBy1` string " ,"
6768 eof
68- return as) " a,a,a,"
69+ return as) " a,a,a,"
6970 parseTest opTest " a+b+c"
7071 parseTest exprTest " 1*2+3/4-5"
7172 parseTest tryTest " aacc"
0 commit comments