git.iko.soy/rowtype-yoga/purescript-native
on f98236e help sign in
97 lines 2.3 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 | ObjectUpdate Value [(String, Value)]
62 | Abs [Ident] Value
63 | App Value [Value]
64 | Var Ident
65 | IfThenElse Value Value Value
66 | Block [Statement]
67 | Constructor String
68 | Case Value [(Binder, Value)]
69 | TypedValue Value PolyType deriving (Show, Data, Typeable)
71data Statement
72 = VariableIntroduction Ident Value
73 | Assignment Ident Value
74 | While Value [Statement]
75 | For Ident Value Value [Statement]
76 | ForEach Ident Value [Statement]
77 | If IfStatement
78 | Return Value deriving (Show, Data, Typeable)
80data IfStatement = IfStatement Value [Statement] (Maybe ElseStatement) deriving (Show, Data, Typeable)
82data ElseStatement
83 = Else [Statement]
84 | ElseIf IfStatement deriving (Show, Data, Typeable)
86data Binder
87 = NullBinder
88 | BooleanBinder Bool
89 | StringBinder String
90 | NumberBinder (Either Integer Double)
91 | VarBinder Ident
92 | NullaryBinder String
93 | UnaryBinder String Binder
94 | ObjectBinder [(String, Binder)]
95 | ArrayBinder [Binder] (Maybe Binder)
96 | NamedBinder Ident Binder
97 | GuardedBinder Value Binder deriving (Show, Data, Typeable)