on 84bfb4e help sign in
elk/src/AST/Expression/Optimized.hs
72 lines 1.6 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2module AST.Expression.Optimized
3 ( Def(..), Facts(..), dummyFacts
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
22 deriving (Eq)
25data Facts = Facts
26 { home :: Maybe ModuleName.Canonical
27 , dependencies :: [Var.TopLevel]
28 }
29 deriving (Eq)
32dummyFacts :: Facts
33dummyFacts =
34 Facts Nothing []
37-- EXPRESSIONS
39data Expr
40 = Literal Literal.Literal
41 | Var Var.Canonical
42 | Range Expr Expr
43 | ExplicitList [Expr]
44 | Binop Var.Canonical Expr Expr
45 | Function [String] Expr
46 | Call Expr [Expr]
47 | TailCall String [String] [Expr]
48 | If [(Expr, Expr)] Expr
49 | Let [Def] Expr
50 | Case String (DT.DecisionTree Jump) [(Int, Branch)]
51 | Data String [Expr]
52 | DataAccess Expr Int
53 | Access Expr String
54 | Update Expr [(String, Expr)]
55 | Record [(String, Expr)]
56 | Port (General.PortImpl Expr Type.Canonical)
57 | GLShader String String Literal.GLShaderTipe
58 | Crash R.Region (Maybe String)
59 deriving (Eq)
62data Jump
63 = Inline Branch
64 | Jump Int
65 deriving (Eq)
68data Branch = Branch
69 { _substitutions :: [(String, DT.Path)]
70 , _branch :: Expr
71 }
72 deriving (Eq)