summaryrefslogtreecommitdiff
path: root/src/GF/Canon/AbsGFC.hs
diff options
context:
space:
mode:
authoraarne <unknown>2003-09-22 13:16:55 +0000
committeraarne <unknown>2003-09-22 13:16:55 +0000
commitb1402e8bd6a68a891b00a214d6cf184d66defe19 (patch)
tree90372ac4e53dce91cf949dbf8e93be06f1d9e8bd /src/GF/Canon/AbsGFC.hs
Founding the newly structured GF2.0 cvs archive.
Diffstat (limited to 'src/GF/Canon/AbsGFC.hs')
-rw-r--r--src/GF/Canon/AbsGFC.hs160
1 files changed, 160 insertions, 0 deletions
diff --git a/src/GF/Canon/AbsGFC.hs b/src/GF/Canon/AbsGFC.hs
new file mode 100644
index 000000000..361c59d34
--- /dev/null
+++ b/src/GF/Canon/AbsGFC.hs
@@ -0,0 +1,160 @@
+module AbsGFC where
+
+import Ident --H
+
+-- Haskell module generated by the BNF converter, except --H
+
+-- newtype Ident = Ident String deriving (Eq,Ord,Show) --H
+data Canon =
+ Gr [Module]
+ deriving (Eq,Ord,Show)
+
+data Module =
+ Mod ModType Extend Open [Flag] [Def]
+ deriving (Eq,Ord,Show)
+
+data ModType =
+ MTAbs Ident
+ | MTCnc Ident Ident
+ | MTRes Ident
+ deriving (Eq,Ord,Show)
+
+data Extend =
+ Ext Ident
+ | NoExt
+ deriving (Eq,Ord,Show)
+
+data Open =
+ NoOpens
+ | Opens [Ident]
+ deriving (Eq,Ord,Show)
+
+data Flag =
+ Flg Ident Ident
+ deriving (Eq,Ord,Show)
+
+data Def =
+ AbsDCat Ident [Decl] [CIdent]
+ | AbsDFun Ident Exp Exp
+ | ResDPar Ident [ParDef]
+ | ResDOper Ident CType Term
+ | CncDCat Ident CType Term Term
+ | CncDFun Ident CIdent [ArgVar] Term Term
+ | AnyDInd Ident Status Ident
+ deriving (Eq,Ord,Show)
+
+data ParDef =
+ ParD Ident [CType]
+ deriving (Eq,Ord,Show)
+
+data Status =
+ Canon
+ | NonCan
+ deriving (Eq,Ord,Show)
+
+data CIdent =
+ CIQ Ident Ident
+ deriving (Eq,Ord,Show)
+
+data Exp =
+ EApp Exp Exp
+ | EProd Ident Exp Exp
+ | EAbs Ident Exp
+ | EAtom Atom
+ | EEq [Equation]
+ deriving (Eq,Ord,Show)
+
+data Sort =
+ SType
+ deriving (Eq,Ord,Show)
+
+data Equation =
+ Equ [APatt] Exp
+ deriving (Eq,Ord,Show)
+
+data APatt =
+ APC CIdent [APatt]
+ | APV Ident
+ | APS String
+ | API Integer
+ | APW
+ deriving (Eq,Ord,Show)
+
+data Atom =
+ AC CIdent
+ | AD CIdent
+ | AV Ident
+ | AM Integer
+ | AS String
+ | AI Integer
+ | AT Sort
+ deriving (Eq,Ord,Show)
+
+data Decl =
+ Decl Ident Exp
+ deriving (Eq,Ord,Show)
+
+data CType =
+ RecType [Labelling]
+ | Table CType CType
+ | Cn CIdent
+ | TStr
+ deriving (Eq,Ord,Show)
+
+data Labelling =
+ Lbg Label CType
+ deriving (Eq,Ord,Show)
+
+data Term =
+ Arg ArgVar
+ | I CIdent
+ | Con CIdent [Term]
+ | LI Ident
+ | R [Assign]
+ | P Term Label
+ | T CType [Case]
+ | S Term Term
+ | C Term Term
+ | FV [Term]
+ | K Tokn
+ | E
+ deriving (Eq,Ord,Show)
+
+data Tokn =
+ KS String
+ | KP [String] [Variant]
+ deriving (Eq,Ord,Show)
+
+data Assign =
+ Ass Label Term
+ deriving (Eq,Ord,Show)
+
+data Case =
+ Cas [Patt] Term
+ deriving (Eq,Ord,Show)
+
+data Variant =
+ Var [String] [String]
+ deriving (Eq,Ord,Show)
+
+data Label =
+ L Ident
+ | LV Integer
+ deriving (Eq,Ord,Show)
+
+data ArgVar =
+ A Ident Integer
+ | AB Ident Integer Integer
+ deriving (Eq,Ord,Show)
+
+data Patt =
+ PC CIdent [Patt]
+ | PV Ident
+ | PW
+ | PR [PattAssign]
+ deriving (Eq,Ord,Show)
+
+data PattAssign =
+ PAss Label Patt
+ deriving (Eq,Ord,Show)
+