on ff98144 help sign in
elk/src/AST/Expression/Optimized.hs
62 lines 1.4 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2module AST.Expression.Optimized
3 ( Def(..), Facts(..)
4 , Expr(..), Jump(..), Branch(..)
5 ) where
7import qualified AST.Expression.General as General
8import qualified AST.Literal as Literal
9import qualified AST.Module.Name as ModuleName
10import qualified AST.Type as Type
11import qualified AST.Variable as Var
12import qualified Optimize.Patterns.DecisionTree as DT
13import qualified Reporting.Region as R
17-- DEFINITIONS
19data Def
20 = Def Facts String Expr
21 | TailDef Facts String [String] Expr
24data Facts = Facts
25 { home :: Maybe ModuleName.Canonical
26 , dependencies :: [Var.TopLevel]
27 }
30-- EXPRESSIONS
32data Expr
33 = Literal Literal.Literal
34 | Var Var.Canonical
35 | Range Expr Expr
36 | ExplicitList [Expr]
37 | Binop Var.Canonical Expr Expr
38 | Function [String] Expr
39 | Call Expr [Expr]
40 | TailCall String [String] [Expr]
41 | If [(Expr, Expr)] Expr
42 | Let [Def] Expr
43 | Case Expr (DT.DecisionTree Jump) [(Int, Branch)]
44 | Data String [Expr]
45 | DataAccess Expr Int
46 | Access Expr String
47 | Update Expr [(String, Expr)]
48 | Record [(String, Expr)]
49 | Port (General.PortImpl Expr Type.Canonical)
50 | GLShader String String Literal.GLShaderTipe
51 | Crash R.Region (Maybe String)
54data Jump
55 = Inline Branch
56 | Jump Int
59data Branch = Branch
60 { _substitutions :: [(String, DT.Path)]
61 , _branch :: Expr
62 }