on 232f7dc help sign in
elk/src/AST/Expression/Valid.hs
107 lines 2.3 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 , Manager(..)
13 )
14 where
17import qualified Data.ByteString as B
18import qualified Data.Map as Map
19import Data.Text (Text)
21import qualified AST.Binop as Binop
22import qualified AST.Expression.Source as Src
23import qualified AST.Shader as Shader
24import qualified AST.Type as Type
25import qualified Elm.Name as N
26import qualified Reporting.Annotation as A
27import qualified Reporting.Region as R
31-- EXPRESSIONS
34type Expr = A.Located Expr_
37data Expr_
38 = Chr Text
39 | Str Text
40 | Int Int
41 | Float Double
42 | Var (Maybe N.Name) N.Name
43 | List [Expr]
44 | Op N.Name
45 | Negate Expr
46 | Binops [(Expr, A.Located N.Name)] Expr
47 | Lambda [Src.Pattern] Expr
48 | Call Expr [Expr]
49 | If [(Expr, Expr)] Expr
50 | Let [Def] Expr
51 | Case Expr [(Src.Pattern, Expr)]
52 | Accessor N.Name
53 | Access Expr N.Name
54 | Update (A.Located N.Name) [(A.Located N.Name, Expr)]
55 | Record [(A.Located N.Name, Expr)]
56 | Unit
57 | Tuple Expr Expr [Expr]
58 | Shader Text Text Shader.Shader
62-- DEFINITIONS
65data Def
66 = Define R.Region (A.Located N.Name) [Src.Pattern] Expr (Maybe Type.Raw)
67 | Destruct R.Region Src.Pattern Expr
71-- MODULE
74data Module =
75 Module
76 { _name :: N.Name
77 , _overview :: A.Located (Maybe B.ByteString)
78 , _docs :: Map.Map N.Name Text
79 , _exports :: Src.Exposing
80 , _imports :: [Src.Import]
81 , _decls :: [A.Located Decl]
82 , _unions :: [Union]
83 , _aliases :: [Alias]
84 , _binop :: [Binop]
85 , _effects :: Effects
86 }
89data Decl = Decl (A.Located N.Name) [Src.Pattern] Expr (Maybe Type.Raw)
90data Union = Union (A.Located N.Name) [A.Located N.Name] [(A.Located N.Name, [Type.Raw])]
91data Alias = Alias (A.Located N.Name) [A.Located N.Name] Type.Raw
92data Binop = Binop (A.Located N.Name) Binop.Associativity Binop.Precedence N.Name
95data Effects
96 = NoEffects
97 | Ports [Port]
98 | Manager R.Region Manager
101data Manager
102 = Cmd (A.Located N.Name)
103 | Sub (A.Located N.Name)
104 | Fx (A.Located N.Name) (A.Located N.Name)
107data Port = Port (A.Located N.Name) Type.Raw