Cabalize ext-core tools
[ghc-hetmet.git] / utils / ext-core / Language / Core / ParseGlue.hs
diff --git a/utils/ext-core/Language/Core/ParseGlue.hs b/utils/ext-core/Language/Core/ParseGlue.hs
new file mode 100644 (file)
index 0000000..3743792
--- /dev/null
@@ -0,0 +1,62 @@
+module Language.Core.ParseGlue where
+
+import Encoding
+
+import Data.List
+
+data ParseResult a = OkP a | FailP String
+type P a = String -> Int -> ParseResult a
+
+instance Show a => Show (ParseResult a)
+  where show (OkP r) = show r
+        show (FailP s) = s
+
+thenP :: P a -> (a -> P b) -> P b
+m `thenP`  k = \ s l -> 
+  case m s l of 
+    OkP a -> k a s l
+    FailP s -> FailP s
+
+returnP :: a -> P a
+returnP m _ _ = OkP m
+
+failP :: String -> P a
+failP s s' _ = FailP (s ++ ":" ++ s')
+
+data Token =
+   TKmodule 
+ | TKdata 
+ | TKnewtype 
+ | TKforall 
+ | TKrec 
+ | TKlet 
+ | TKin 
+ | TKcase 
+ | TKof 
+ | TKcast
+ | TKnote 
+ | TKexternal
+ | TKwild
+ | TKoparen 
+ | TKcparen 
+ | TKobrace
+ | TKcbrace
+ | TKhash
+ | TKeq 
+ | TKcoloncolon 
+ | TKstar 
+ | TKrarrow 
+ | TKlambda
+ | TKbiglambda
+ | TKat 
+ | TKdot
+ | TKcolon
+ | TKquestion
+ | TKsemicolon
+ | TKname String 
+ | TKcname String
+ | TKinteger Integer 
+ | TKrational Rational
+ | TKstring String 
+ | TKchar Char 
+ | TKEOF