summaryrefslogtreecommitdiff
path: root/src-3.0/GF/JavaScript/AbsJS.hs
blob: 2632ade480f352cb85e89ff4bcdc01361919e680 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
module GF.JavaScript.AbsJS where

-- Haskell module generated by the BNF converter

newtype Ident = Ident String deriving (Eq,Ord,Show)
data Program =
   Program [Element]
  deriving (Eq,Ord,Show)

data Element =
   FunDef Ident [Ident] [Stmt]
 | ElStmt Stmt
  deriving (Eq,Ord,Show)

data Stmt =
   SCompound [Stmt]
 | SReturnVoid
 | SReturn Expr
 | SDeclOrExpr DeclOrExpr
  deriving (Eq,Ord,Show)

data DeclOrExpr =
   Decl [DeclVar]
 | DExpr Expr
  deriving (Eq,Ord,Show)

data DeclVar =
   DVar Ident
 | DInit Ident Expr
  deriving (Eq,Ord,Show)

data Expr =
   EAssign Expr Expr
 | ENew Ident [Expr]
 | EMember Expr Ident
 | EIndex Expr Expr
 | ECall Expr [Expr]
 | EVar Ident
 | EInt Int
 | EDbl Double
 | EStr String
 | ETrue
 | EFalse
 | ENull
 | EThis
 | EFun [Ident] [Stmt]
 | EArray [Expr]
 | EObj [Property]
 | ESeq [Expr]
  deriving (Eq,Ord,Show)

data Property =
   Prop PropertyName Expr
  deriving (Eq,Ord,Show)

data PropertyName =
   IdentPropName Ident
 | StringPropName String
  deriving (Eq,Ord,Show)