reset a3, kut Charlie ;)
[tt2015.git] / a3 / code / Generics / GenParse.dcl
diff --git a/a3/code/Generics/GenParse.dcl b/a3/code/Generics/GenParse.dcl
new file mode 100644 (file)
index 0000000..98de10b
--- /dev/null
@@ -0,0 +1,20 @@
+definition module GenParse\r
+\r
+import StdGeneric, StdMaybe\r
+\r
+class ParseInput s where\r
+       parseInput :: s -> (Maybe Char, s)\r
+\r
+:: StringInput = { si_str :: !String, si_pos :: !Int}  \r
+mkStringInput :: String -> StringInput \r
+\r
+instance ParseInput    StringInput \r
+instance ParseInput File\r
+\r
+:: Expr\r
+generic gParse a :: Expr -> Maybe a\r
+\r
+derive gParse Int, Char, Bool, Real, String, UNIT, PAIR, EITHER, CONS, FIELD, OBJECT, [], {!}, {}\r
+\r
+parseString :: String -> Maybe a | gParse{|*|} a\r
+parseFile :: File -> Maybe a | gParse{|*|} a
\ No newline at end of file