summaryrefslogtreecommitdiff
path: root/src/GF/FCFG/AbsFCFG.hs
blob: c7b2c4057c028a7e0923e9d069c461accde66c29 (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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
module GF.FCFG.AbsFCFG where

-- Haskell module generated by the BNF converter

newtype Ident = Ident String deriving (Eq,Ord,Show)
data FGrammar =
   FGr [FRule]
  deriving (Eq,Ord,Show)

data FRule =
   FR Abstract [[FSymbol]]
  deriving (Eq,Ord,Show)

data Abstract =
   Abs FCat [FCat] Name
  deriving (Eq,Ord,Show)

data FSymbol =
   FSymCat FCat Integer Integer
 | FSymTok String
  deriving (Eq,Ord,Show)

data FCat =
   FC Integer Ident [[PathEl]] [PathTerm]
  deriving (Eq,Ord,Show)

data PathEl =
   PLabel Label
 | PTerm Term
  deriving (Eq,Ord,Show)

data PathTerm =
   PtT [PathEl] Term
  deriving (Eq,Ord,Show)

data Name =
   Nm Ident [Profile]
  deriving (Eq,Ord,Show)

data Profile =
   Unify [Integer]
 | Const Forest
  deriving (Eq,Ord,Show)

data Forest =
   FMeta
 | FNode Ident [[Forest]]
 | FString String
 | FInt Integer
 | FFloat Double
  deriving (Eq,Ord,Show)

data Term =
   Arg Integer Ident [PathEl]
 | Constr CIdent [Term]
 | Rec [Assoc]
 | Proj Term Label
 | Tbl [Case]
 | Select Term Term
 | Vars [Term]
 | Concat Term Term
 | Tok String
 | Empty
  deriving (Eq,Ord,Show)

data Case =
   Cas Term Term
  deriving (Eq,Ord,Show)

data Assoc =
   Ass Label Term
  deriving (Eq,Ord,Show)

data Label =
   L Ident
 | LV Integer
  deriving (Eq,Ord,Show)

data CIdent =
   CIQ Ident Ident
  deriving (Eq,Ord,Show)