mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-20 02:09:32 -06:00
183 lines
2.8 KiB
Haskell
183 lines
2.8 KiB
Haskell
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)
|
|
|