git.iko.soy/rowtype-yoga/purescript-native
on 5d428e9 help sign in
89 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
21import Data.Data
23data UnaryOperator
24 = Negate
25 | Not
26 | BitwiseNot deriving (Show, Eq, Data, Typeable)
28data BinaryOperator
29 = Add
30 | Subtract
31 | Multiply
32 | Divide
33 | Modulus
34 | EqualTo
35 | NotEqualTo
36 | LessThan
37 | LessThanOrEqualTo
38 | GreaterThan
39 | GreaterThanOrEqualTo
40 | And
41 | Or
42 | BitwiseAnd
43 | BitwiseOr
44 | BitwiseXor
45 | ShiftLeft
46 | ShiftRight
47 | ZeroFillShiftRight
48 | Concat deriving (Show, Eq, Data, Typeable)
50data Value
51 = NumericLiteral (Either Integer Double)
52 | StringLiteral String
53 | BooleanLiteral Bool
54 | Unary UnaryOperator Value
55 | Binary BinaryOperator Value Value
56 | ArrayLiteral [Value]
57 | Indexer Value Value
58 | ObjectLiteral [(String, Value)]
59 | Accessor String Value
60 | Abs [String] Value
61 | App Value [Value]
62 | Var String
63 | Block [Statement]
64 | Constructor String
65 | Case Value [(Binder, Value)]
66 | TypedValue Value PolyType deriving (Show, Data, Typeable)
68data Statement
69 = VariableIntroduction String Value
70 | Assignment AssignmentTarget Value
71 | While Value [Statement]
72 | For (Statement, Value, Statement) [Statement]
73 | IfThenElse (Value) [Statement] (Maybe [Statement])
74 | Return Value deriving (Show, Data, Typeable)
76data Binder
77 = BooleanBinder Bool
78 | StringBinder String
79 | NumberBinder (Either Integer Double)
80 | VarBinder String
81 | NullaryBinder String
82 | UnaryBinder String Binder
83 | ObjectBinder [(String, Binder)]
84 | ArrayBinder [Binder] (Maybe Binder) deriving (Show, Data, Typeable)
86data AssignmentTarget
87 = AssignVariable String
88 | AssignObjectProperty String AssignmentTarget
89 | AssignArrayIndex Value AssignmentTarget deriving (Show, Data, Typeable)