git.iko.soy/rowtype-yoga/purescript-native
on 70bc922 help sign in
101 lines 2.5 kB history raw
1-----------------------------------------------------------------------------
2--
3-- Module : Language.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 Language.PureScript.Values where
19import Language.PureScript.Types
20import Language.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 | BinaryNoParens (Qualified Ident) Value Value
58 | Parens Value
59 | ArrayLiteral [Value]
60 | Indexer Value Value
61 | ObjectLiteral [(String, Value)]
62 | Accessor String Value
63 | ObjectUpdate Value [(String, Value)]
64 | Abs [Ident] Value
65 | App Value [Value]
66 | Var (Qualified Ident)
67 | IfThenElse Value Value Value
68 | Block [Statement]
69 | Constructor (Qualified ProperName)
70 | Case Value [(Binder, Value)]
71 | TypedValue Value PolyType deriving (Show, Data, Typeable)
73data Statement
74 = VariableIntroduction Ident Value
75 | Assignment Ident Value
76 | While Value [Statement]
77 | For Ident Value Value [Statement]
78 | ForEach Ident Value [Statement]
79 | If IfStatement
80 | ValueStatement Value
81 | Return Value deriving (Show, Data, Typeable)
83data IfStatement = IfStatement Value [Statement] (Maybe ElseStatement) deriving (Show, Data, Typeable)
85data ElseStatement
86 = Else [Statement]
87 | ElseIf IfStatement deriving (Show, Data, Typeable)
89data Binder
90 = NullBinder
91 | BooleanBinder Bool
92 | StringBinder String
93 | NumberBinder (Either Integer Double)
94 | VarBinder Ident
95 | NullaryBinder (Qualified ProperName)
96 | UnaryBinder (Qualified ProperName) Binder
97 | ObjectBinder [(String, Binder)]
98 | ArrayBinder [Binder]
99 | ConsBinder Binder Binder
100 | NamedBinder Ident Binder
101 | GuardedBinder Value Binder deriving (Show, Data, Typeable)