main program
[fp.git] / parse.icl
index 4359629..00c5f44 100644 (file)
--- a/parse.icl
+++ b/parse.icl
@@ -94,8 +94,8 @@ token t :== parseIf ((=+?=)t) top
 (until) infix 5 :: (Parser a) (Parser b) -> Parser ([a], b)
 (until) p grd = (tuple [] <$> grd) <|> (appFst o 'SS'._cons <$> p <*> p until grd)
 
-parse :: [Token] ParseState -> Either [String] AST
-parse ts st = runStateT parseAST {st & tokens=ts} >>= uncurry parse2
+parse :: ParseState [Token] -> Either [String] AST
+parse st ts = runStateT parseAST {st & tokens=ts} >>= uncurry parse2
 
 parse2 :: AST ParseState -> Either [String] AST
 parse2 (AST fs) ps = AST <$> mapM pfun fs
@@ -171,24 +171,3 @@ parseIdent = (\(IdentToken s)->s) <$> token (IdentToken "")
 
 parseInt :: Parser Int
 parseInt = (\(IntToken i)->i) <$> token (IntToken 0)
-
-Start =
-       toString <$> parse (
-       lex $
-       ['id x = x;'] ++
-       ['const x y = x;'] ++
-       ['flip x y z = x z y;'] ++
-       ['twice f = f . f;'] ++
-       ['fix f x = let x = f x in x;'] ++
-       ['. infixr 9 f g x = f $ g x;'] ++
-       ['$ infixr 0 = id;'] ++
-       ['& infixr 0 = flip $;'] ++
-       ['+ infixr 6 = code add;'] ++
-       ['- infixr 6 = code sub;'] ++
-       ['* infixr 7 = code mul;'] ++
-       ['/ infixr 7 = code div;'] ++
-       ['&& infixl 3 = code and;'] ++
-       ['|| infixl 2 = code or;'] ++
-       ['ap = (1 +);'] ++
-       ['ap = (+ 1);']
-       ) zero