on 2297bbf help sign in
elk/src/AST/Expression/Optimized.hs
67 lines 1.5 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
24data Facts = Facts
25 { home :: Maybe ModuleName.Canonical
26 , dependencies :: [Var.TopLevel]
27 }
30dummyFacts :: Facts
31dummyFacts =
32 Facts Nothing []
35-- EXPRESSIONS
37data Expr
38 = Literal Literal.Literal
39 | Var Var.Canonical
40 | Range Expr Expr
41 | ExplicitList [Expr]
42 | Binop Var.Canonical Expr Expr
43 | Function [String] Expr
44 | Call Expr [Expr]
45 | TailCall String [String] [Expr]
46 | If [(Expr, Expr)] Expr
47 | Let [Def] Expr
48 | Case String (DT.DecisionTree Jump) [(Int, Branch)]
49 | Data String [Expr]
50 | DataAccess Expr Int
51 | Access Expr String
52 | Update Expr [(String, Expr)]
53 | Record [(String, Expr)]
54 | Port (General.PortImpl Expr Type.Canonical)
55 | GLShader String String Literal.GLShaderTipe
56 | Crash R.Region (Maybe String)
59data Jump
60 = Inline Branch
61 | Jump Int
64data Branch = Branch
65 { _substitutions :: [(String, DT.Path)]
66 , _branch :: Expr
67 }