File tree 2 files changed +29
-1
lines changed
chapter24/learning-parsers
2 files changed +29
-1
lines changed Original file line number Diff line number Diff line change @@ -19,4 +19,5 @@ executable learning-parsers
19
19
default-language : Haskell2010
20
20
build-depends : base >= 4.7 && < 5
21
21
, trifecta
22
- , parsers
22
+ , parsers
23
+ , raw-strings-qq
Original file line number Diff line number Diff line change
1
+ {-# LANGUAGE QuasiQuotes #-}
2
+ module AltParsing where
3
+
4
+ import Control.Applicative
5
+ import Text.RawString.QQ
6
+ import Text.Trifecta
7
+
8
+ type NumberOrString =
9
+ Either Integer String
10
+
11
+ eitherOr = [r |
12
+ 123
13
+ def
14
+ 456
15
+ ghi
16
+ |]
17
+
18
+ parseNos :: Parser NumberOrString
19
+ parseNos =
20
+ skipMany (oneOf " \n " )
21
+ >>
22
+ (Left <$> integer)
23
+ <|> (Right <$> some letter)
24
+
25
+ main = do
26
+ print $ parseString parseNos mempty eitherOr
27
+ print $ parseString (some (token parseNos)) mempty eitherOr
You can’t perform that action at this time.
0 commit comments