on 9cda2b2 help sign in
elk/src/AST/Expression/Source.hs
32 lines 939 B history raw
1{-# OPTIONS_GHC -Wall #-}
3module AST.Expression.Source where
5import AST.PrettyPrint
6import Text.PrettyPrint as P
7import qualified AST.Expression.General as General
8import AST.Type (RawType)
9import qualified AST.Variable as Var
10import qualified AST.Annotation as Annotation
11import qualified AST.Pattern as Pattern
14{-| Expressions created by the parser. These use a split representation of type
15annotations and definitions, which is how they appear in source code and how
16they are parsed.
17-}
18type Expr = General.Expr Annotation.Region Def Var.Raw
19type Expr' = General.Expr' Annotation.Region Def Var.Raw
21data Def
22 = Definition Pattern.RawPattern Expr
23 | TypeAnnotation String RawType
24 deriving (Show)
26instance Pretty Def where
27 pretty def =
28 case def of
29 TypeAnnotation name tipe ->
30 variable name <+> P.colon <+> pretty tipe
31 Definition pattern expr ->
32 pretty pattern <+> P.equals <+> pretty expr