on bfb8eca help sign in
elk/src/AST/Expression/Valid.hs
99 lines 2.2 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2module AST.Expression.Valid
3 ( Expr, Expr_(..)
4 , Def(..)
5 , Module(..)
6 , Decl(..)
7 , Union(..)
8 , Alias(..)
9 , Binop(..)
10 , Effects(..)
11 , Port(..)
12 )
13 where
16import qualified Data.ByteString as B
17import qualified Data.Map as Map
18import Data.Text (Text)
20import qualified AST.Binop as Binop
21import qualified AST.Expression.Source as Src
22import qualified AST.Literal as Literal
23import qualified AST.Type as Type
24import qualified Elm.Name as N
25import qualified Reporting.Annotation as A
26import qualified Reporting.Region as R
30-- EXPRESSIONS
33type Expr = A.Located Expr_
36data Expr_
37 = Literal Literal.Literal
38 | Var (Maybe N.Name) N.Name
39 | List [Expr]
40 | Op N.Name
41 | Negate Expr
42 | Binops [(Expr, A.Located N.Name)] Expr
43 | Lambda [Src.Pattern] Expr
44 | Call Expr [Expr]
45 | If [(Expr, Expr)] Expr
46 | Let [Def] Expr
47 | Case Expr [(Src.Pattern, Expr)]
48 | Accessor N.Name
49 | Access Expr N.Name
50 | Update (A.Located N.Name) [(A.Located N.Name, Expr)]
51 | Record [(A.Located N.Name, Expr)]
52 | Unit
53 | Tuple Expr Expr [Expr]
54 | GLShader Text Text Literal.Shader
58-- DEFINITIONS
61data Def
62 = Define R.Region (A.Located N.Name) [Src.Pattern] Expr (Maybe Type.Raw)
63 | Destruct R.Region Src.Pattern Expr
67-- MODULE
70data Module =
71 Module
72 { _name :: N.Name
73 , _overview :: A.Located (Maybe B.ByteString)
74 , _docs :: Map.Map N.Name Text
75 , _exports :: Src.Exposing
76 , _imports :: [Src.Import]
77 , _decls :: [Decl]
78 , _unions :: [Union]
79 , _aliases :: [Alias]
80 , _binop :: [Binop]
81 , _effects :: Effects
82 }
85data Decl = Decl (A.Located N.Name) [Src.Pattern] Expr (Maybe Type.Raw)
86data Union = Union (A.Located N.Name) [A.Located N.Name] [(A.Located N.Name, [Type.Raw])]
87data Alias = Alias (A.Located N.Name) [A.Located N.Name] Type.Raw
88data Binop = Binop (A.Located N.Name) Binop.Associativity Binop.Precedence N.Name
91data Effects
92 = NoEffects
93 | Ports [Port]
94 | Cmd (A.Located Text)
95 | Sub (A.Located Text)
96 | Fx (A.Located Text) (A.Located Text)
99data Port = Port (A.Located N.Name) Type.Raw