From f8c9564372709e0634c9eb0c208ec9cc31a93de7 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 25 Dec 2018 01:54:02 +0100 Subject: Add if construct; fib example --- Sjit/Syntax.icl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'Sjit/Syntax.icl') diff --git a/Sjit/Syntax.icl b/Sjit/Syntax.icl index 7412d7c..90aeb39 100644 --- a/Sjit/Syntax.icl +++ b/Sjit/Syntax.icl @@ -16,6 +16,8 @@ import Text.Parsers.Simple.Core | TTrue | TFalse + | TIf + | TEq | TComma @@ -32,6 +34,7 @@ where TInt n -> toString n TTrue -> "True" TFalse -> "False" + TIf -> "if" TEq -> "=" TComma -> "," TParenOpen -> "(" @@ -51,6 +54,7 @@ where # tk = case n of "True" -> TTrue "False" -> TFalse + "if" -> TIf n -> TIdent n -> lex [tk:tks] i e s @@ -112,7 +116,8 @@ where noInfix :: Parser Token Expr noInfix = - liftM2 App ident (pToken TParenOpen *> pSepBy expr (pToken TComma) <* pToken TParenClose) + liftM2 App ident (pToken TParenOpen *> pSepBy expr (pToken TComma) <* pToken TParenClose) + <|> liftM3 If (pToken TIf *> expr) expr expr <|> Var <$> ident <|> Int <$> int <|> Bool <$> bool -- cgit v1.2.3