From bc950badd0655328af7a9886988722809e367d07 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Thu, 20 Jul 2017 20:25:25 +0000 Subject: Type checking --- Sil/Parse.icl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'Sil/Parse.icl') diff --git a/Sil/Parse.icl b/Sil/Parse.icl index 806ac69..fb77def 100644 --- a/Sil/Parse.icl +++ b/Sil/Parse.icl @@ -21,6 +21,7 @@ from Text import <+, class Text, instance Text String import GenEq import Sil.Syntax +import Sil.Types import Sil.Util.Parser import Sil.Util.Printer @@ -119,7 +120,7 @@ function = item TParenClose *> item TBraceOpen *> codeblock >>= \cb -> - item TBraceClose *> pure + item TBraceClose $> { f_type = t , f_name = n , f_args = args @@ -135,8 +136,8 @@ initialisation :: Parser Token [Initialisation] initialisation = type >>= \t -> seplist TComma name >>= \ns -> - item TSemicolon >>= \_ -> - pure [{init_type=t, init_name=n} \\ n <- ns] + item TSemicolon $> + [{init_type=t, init_name=n} \\ n <- ns] statement :: Parser Token Statement statement = declaration @@ -192,7 +193,7 @@ expression $ noInfix where op :: Token Op2 -> Parser Token Op2 - op token operator = item token *> pure operator + op token operator = item token $> operator rightAssoc :: (Parser Token Op2) (Parser Token Expression) -> Parser Token Expression rightAssoc opp appp = appp >>= \e1 -> optional (opp >>= \op -> rightAssoc opp appp >>= \e -> pure (op,e)) @@ -231,7 +232,7 @@ type <|> type "Void" TVoid Expected "type" where - type s t = item (TName s) *> pure t + type s t = item (TName s) $> t literal :: Parser Token Literal literal = satisfy isLit >>= \(TLit lit) -> pure lit -- cgit v1.2.3