git.iko.soy/rowtype-yoga/purescript-native
on 0c961be help sign in
90 lines 2.1 kB history raw
1-----------------------------------------------------------------------------
2--
3-- Module : PureScript.Values
4-- Copyright : (c) Phil Freeman 2013
5-- License : MIT
6--
7-- Maintainer : Phil Freeman <paf31@cantab.net>
8-- Stability : experimental
9-- Portability :
10--
11-- |
12--
13-----------------------------------------------------------------------------
15{-# LANGUAGE DeriveDataTypeable #-}
17module PureScript.Values where
19import PureScript.Types
20import PureScript.Names
22import Data.Data
24data UnaryOperator
25 = Negate
26 | Not
27 | BitwiseNot deriving (Show, Eq, Data, Typeable)
29data BinaryOperator
30 = Add
31 | Subtract
32 | Multiply
33 | Divide
34 | Modulus
35 | EqualTo
36 | NotEqualTo
37 | LessThan
38 | LessThanOrEqualTo
39 | GreaterThan
40 | GreaterThanOrEqualTo
41 | And
42 | Or
43 | BitwiseAnd
44 | BitwiseOr
45 | BitwiseXor
46 | ShiftLeft
47 | ShiftRight
48 | ZeroFillShiftRight
49 | Concat deriving (Show, Eq, Data, Typeable)
51data Value
52 = NumericLiteral (Either Integer Double)
53 | StringLiteral String
54 | BooleanLiteral Bool
55 | Unary UnaryOperator Value
56 | Binary BinaryOperator Value Value
57 | ArrayLiteral [Value]
58 | Indexer Value Value
59 | ObjectLiteral [(String, Value)]
60 | Accessor String Value
61 | Abs [Ident] Value
62 | App Value [Value]
63 | Var Ident
64 | Block [Statement]
65 | Constructor String
66 | Case Value [(Binder, Value)]
67 | TypedValue Value PolyType deriving (Show, Data, Typeable)
69data Statement
70 = VariableIntroduction Ident Value
71 | Assignment AssignmentTarget Value
72 | While Value [Statement]
73 | For (Statement, Value, Statement) [Statement]
74 | IfThenElse (Value) [Statement] (Maybe [Statement])
75 | Return Value deriving (Show, Data, Typeable)
77data Binder
78 = BooleanBinder Bool
79 | StringBinder String
80 | NumberBinder (Either Integer Double)
81 | VarBinder Ident
82 | NullaryBinder String
83 | UnaryBinder String Binder
84 | ObjectBinder [(String, Binder)]
85 | ArrayBinder [Binder] (Maybe Binder) deriving (Show, Data, Typeable)
87data AssignmentTarget
88 = AssignVariable Ident
89 | AssignObjectProperty String AssignmentTarget
90 | AssignArrayIndex Value AssignmentTarget deriving (Show, Data, Typeable)