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