summaryrefslogtreecommitdiff
path: root/src-3.0/GF/Canon/AbsGFC.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-05-21 09:26:44 +0000
committeraarne <aarne@cs.chalmers.se>2008-05-21 09:26:44 +0000
commit055c0d0d5a5bb0dc75904fe53df7f2e4f5732a8f (patch)
tree0e63fb68c69c8f6ad0f78893c63420f0a3600e1c /src-3.0/GF/Canon/AbsGFC.hs
parent915a1de71783ab8446b1af9e72c7ba7dfbc12d3f (diff)
GF/src is now for 2.9, and the new sources are in src-3.0 - keep it this way until the release of GF 3
Diffstat (limited to 'src-3.0/GF/Canon/AbsGFC.hs')
-rw-r--r--src-3.0/GF/Canon/AbsGFC.hs182
1 files changed, 182 insertions, 0 deletions
diff --git a/src-3.0/GF/Canon/AbsGFC.hs b/src-3.0/GF/Canon/AbsGFC.hs
new file mode 100644
index 000000000..8ce719104
--- /dev/null
+++ b/src-3.0/GF/Canon/AbsGFC.hs
@@ -0,0 +1,182 @@
+module GF.Canon.AbsGFC where
+
+import GF.Infra.Ident --H
+
+-- Haskell module generated by the BNF converter, except --H
+
+-- newtype Ident = Ident String deriving (Eq,Ord,Show) --H
+
+data Canon =
+ MGr [Ident] Ident [Module]
+ | Gr [Module]
+ deriving (Eq,Ord,Show)
+
+data Line =
+ LMulti [Ident] Ident
+ | LHeader ModType Extend Open
+ | LFlag Flag
+ | LDef Def
+ | LEnd
+ 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
+ | MTTrans Ident Ident Ident
+ deriving (Eq,Ord,Show)
+
+data Extend =
+ Ext [Ident]
+ | NoExt
+ deriving (Eq,Ord,Show)
+
+data Open =
+ Opens [Ident]
+ | NoOpens
+ deriving (Eq,Ord,Show)
+
+data Flag =
+ Flg Ident Ident
+ deriving (Eq,Ord,Show)
+
+data Def =
+ AbsDCat Ident [Decl] [CIdent]
+ | AbsDFun Ident Exp Exp
+ | AbsDTrans Ident 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
+ | EData
+ | 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
+ | APF Double
+ | APW
+ deriving (Eq,Ord,Show)
+
+data Atom =
+ AC CIdent
+ | AD CIdent
+ | AV Ident
+ | AM Integer
+ | AS String
+ | AI Integer
+ | AF Double
+ | 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
+ | TInts Integer
+ deriving (Eq,Ord,Show)
+
+data Labelling =
+ Lbg Label CType
+ deriving (Eq,Ord,Show)
+
+data Term =
+ Arg ArgVar
+ | I CIdent
+ | Par CIdent [Term]
+ | LI Ident
+ | R [Assign]
+ | P Term Label
+ | T CType [Case]
+ | V CType [Term]
+ | S Term Term
+ | C Term Term
+ | FV [Term]
+ | EInt Integer
+ | EFloat Double
+ | K Tokn
+ | E
+ deriving (Eq,Ord,Show)
+
+data Tokn =
+ KS String
+ | KP [String] [Variant]
+ | KM String
+ 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]
+ | PI Integer
+ | PF Double
+ deriving (Eq,Ord,Show)
+
+data PattAssign =
+ PAss Label Patt
+ deriving (Eq,Ord,Show)
+