projects
/
ghc-hetmet.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
0d7907a80ed3812ded705e724d647bf0395e642d
[ghc-hetmet.git]
/
ghc
/
compiler
/
parser
/
ParserCoreUtils.hs
1
module ParserCoreUtils where
2
3
data ParseResult a = OkP a | FailP String
4
type P a = String -> Int -> ParseResult a
5
6
thenP :: P a -> (a -> P b) -> P b
7
m `thenP` k = \ s l ->
8
case m s l of
9
OkP a -> k a s l
10
FailP s -> FailP s
11
12
returnP :: a -> P a
13
returnP m _ _ = OkP m
14
15
failP :: String -> P a
16
failP s s' _ = FailP (s ++ ":" ++ s')
17
18
data Token =
19
TKmodule
20
| TKimport
21
| TKdata
22
| TKnewtype
23
| TKforall
24
| TKrec
25
| TKlet
26
| TKin
27
| TKcase
28
| TKof
29
| TKcoerce
30
| TKnote
31
| TKexternal
32
| TKwild
33
| TKoparen
34
| TKcparen
35
| TKobrace
36
| TKcbrace
37
| TKhash
38
| TKeq
39
| TKcoloncolon
40
| TKstar
41
| TKrarrow
42
| TKlambda
43
| TKat
44
| TKdot
45
| TKquestion
46
| TKsemicolon
47
| TKname String
48
| TKcname String
49
| TKinteger Integer
50
| TKrational Rational
51
| TKstring String
52
| TKchar Char
53
| TKEOF
54