on 93cd759 help sign in
elk/src/AST/Expression/Optimized.hs
48 lines 1.2 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2module AST.Expression.Optimized
3 ( Expr(..)
4 , Def(..)
5 , Facts(..)
6 ) where
8import qualified Data.Map as Map
10import qualified AST.Expression.General as General
11import qualified AST.Literal as Literal
12import qualified AST.Module.Name as ModuleName
13import qualified AST.Type as Type
14import qualified AST.Variable as Var
15import qualified Optimize.Cases as PM
18data Expr
19 = Literal Literal.Literal
20 | Var Var.Canonical
21 | Range Expr Expr
22 | ExplicitList [Expr]
23 | Binop Var.Canonical Expr Expr
24 | Function [String] Expr
25 | Call Expr [Expr]
26 | TailCall String [String] [Expr]
27 | If [(Expr, Expr)] Expr
28 | Let [Def] Expr
29 | Case Expr (PM.DecisionTree Int) (Map.Map Int Expr)
30 | Data String [Expr]
31 | DataAccess Expr Int
32 | Access Expr String
33 | Update Expr [(String, Expr)]
34 | Record [(String, Expr)]
35 | Port (General.PortImpl Expr Type.Canonical)
36 | GLShader String String Literal.GLShaderTipe
37 | Crash
40data Def
41 = Def Facts String Expr
42 | TailDef Facts String [String] Expr
45data Facts = Facts
46 { home :: Maybe ModuleName.Canonical
47 , dependencies :: [Var.TopLevel]
48 }