summaryrefslogtreecommitdiff
path: root/src/GF/JavaScript/AbsJS.hs
blob: d139872bd0128620efdc560e15183c05365ac09d (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
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 Integer
 | EDbl Double
 | EStr String
 | ETrue
 | EFalse
 | ENull
 | EThis
 | EFun [Ident] [Stmt]
 | EArray [Expr]
 | EObj [Property]
 | ESeq [Expr]
  deriving (Eq,Ord,Show)

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