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