mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-26 11:18:55 -06:00
romance Inf ; %, included
This commit is contained in:
BIN
doc/DocGF.pdf
BIN
doc/DocGF.pdf
Binary file not shown.
@@ -41,13 +41,13 @@ data ModType =
|
|||||||
data ModBody =
|
data ModBody =
|
||||||
MBody Extend Opens [TopDef]
|
MBody Extend Opens [TopDef]
|
||||||
| MWith Ident [Open]
|
| MWith Ident [Open]
|
||||||
| MWithE [Ident] Ident [Open]
|
| MWithE [Included] Ident [Open]
|
||||||
| MReuse Ident
|
| MReuse Ident
|
||||||
| MUnion [Included]
|
| MUnion [Included]
|
||||||
deriving (Eq,Ord,Show)
|
deriving (Eq,Ord,Show)
|
||||||
|
|
||||||
data Extend =
|
data Extend =
|
||||||
Ext [Ident]
|
Ext [Included]
|
||||||
| NoExt
|
| NoExt
|
||||||
deriving (Eq,Ord,Show)
|
deriving (Eq,Ord,Show)
|
||||||
|
|
||||||
@@ -76,6 +76,7 @@ data QualOpen =
|
|||||||
data Included =
|
data Included =
|
||||||
IAll Ident
|
IAll Ident
|
||||||
| ISome Ident [Ident]
|
| ISome Ident [Ident]
|
||||||
|
| IMinus Ident [Ident]
|
||||||
deriving (Eq,Ord,Show)
|
deriving (Eq,Ord,Show)
|
||||||
|
|
||||||
data Def =
|
data Def =
|
||||||
|
|||||||
@@ -40,13 +40,13 @@ MTTransfer. ModType ::= "transfer" Ident ":" Open "->" Open ;
|
|||||||
|
|
||||||
MBody. ModBody ::= Extend Opens "{" [TopDef] "}" ;
|
MBody. ModBody ::= Extend Opens "{" [TopDef] "}" ;
|
||||||
MWith. ModBody ::= Ident "with" [Open] ;
|
MWith. ModBody ::= Ident "with" [Open] ;
|
||||||
MWithE. ModBody ::= [Ident] "**" Ident "with" [Open] ;
|
MWithE. ModBody ::= [Included] "**" Ident "with" [Open] ;
|
||||||
MReuse. ModBody ::= "reuse" Ident ;
|
MReuse. ModBody ::= "reuse" Ident ;
|
||||||
MUnion. ModBody ::= "union" [Included] ;
|
MUnion. ModBody ::= "union" [Included] ;
|
||||||
|
|
||||||
separator TopDef "" ;
|
separator TopDef "" ;
|
||||||
|
|
||||||
Ext. Extend ::= [Ident] "**" ;
|
Ext. Extend ::= [Included] "**" ;
|
||||||
NoExt. Extend ::= ;
|
NoExt. Extend ::= ;
|
||||||
|
|
||||||
separator Open "," ;
|
separator Open "," ;
|
||||||
@@ -66,8 +66,9 @@ QOInterface. QualOpen ::= "interface" ;
|
|||||||
|
|
||||||
separator Included "," ;
|
separator Included "," ;
|
||||||
|
|
||||||
IAll. Included ::= Ident ;
|
IAll. Included ::= Ident ;
|
||||||
ISome. Included ::= Ident "[" [Ident] "]" ;
|
ISome. Included ::= Ident "[" [Ident] "]" ;
|
||||||
|
IMinus. Included ::= Ident "-" "[" [Ident] "]" ;
|
||||||
|
|
||||||
-- definitions after the $oper$ keywords
|
-- definitions after the $oper$ keywords
|
||||||
|
|
||||||
@@ -167,7 +168,7 @@ ETyped. Exp4 ::= "<" Exp ":" Exp ">" ; -- typing, used for annotations
|
|||||||
|
|
||||||
EProj. Exp3 ::= Exp3 "." Label ;
|
EProj. Exp3 ::= Exp3 "." Label ;
|
||||||
EQConstr. Exp3 ::= "{" Ident "." Ident "}" ; -- qualified constructor
|
EQConstr. Exp3 ::= "{" Ident "." Ident "}" ; -- qualified constructor
|
||||||
EQCons. Exp3 ::= "%" Ident "." Ident "%" ; -- qualified constant
|
EQCons. Exp3 ::= "%" Ident "." Ident ; -- qualified constant
|
||||||
|
|
||||||
EApp. Exp2 ::= Exp2 Exp3 ;
|
EApp. Exp2 ::= Exp2 Exp3 ;
|
||||||
ETable. Exp2 ::= "table" "{" [Case] "}" ;
|
ETable. Exp2 ::= "table" "{" [Case] "}" ;
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
-- Stability : (stable)
|
-- Stability : (stable)
|
||||||
-- Portability : (portable)
|
-- Portability : (portable)
|
||||||
--
|
--
|
||||||
-- > CVS $Date: 2005/05/25 10:41:59 $
|
-- > CVS $Date: 2005/05/26 14:18:17 $
|
||||||
-- > CVS $Author: bringert $
|
-- > CVS $Author: aarne $
|
||||||
-- > CVS $Revision: 1.20 $
|
-- > CVS $Revision: 1.21 $
|
||||||
--
|
--
|
||||||
-- From internal source syntax to BNFC-generated (used for printing).
|
-- From internal source syntax to BNFC-generated (used for printing).
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
@@ -50,7 +50,7 @@ trModule (i,mo) = case mo of
|
|||||||
(mkTopDefs (concatMap trAnyDef (tree2list (jments m)) ++ map trFlag (flags m)))
|
(mkTopDefs (concatMap trAnyDef (tree2list (jments m)) ++ map trFlag (flags m)))
|
||||||
|
|
||||||
trExtend :: [Ident] -> P.Extend
|
trExtend :: [Ident] -> P.Extend
|
||||||
trExtend i = ifNull P.NoExt (P.Ext . map tri) i
|
trExtend i = ifNull P.NoExt (P.Ext . map (P.IAll . tri)) i ---- IAll
|
||||||
|
|
||||||
---- this has to be completed with other mtys
|
---- this has to be completed with other mtys
|
||||||
forName (MTConcrete a) = tri a
|
forName (MTConcrete a) = tri a
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -147,14 +147,14 @@ instance Print ModBody where
|
|||||||
prt i e = case e of
|
prt i e = case e of
|
||||||
MBody extend opens topdefs -> prPrec i 0 (concatD [prt 0 extend , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")])
|
MBody extend opens topdefs -> prPrec i 0 (concatD [prt 0 extend , prt 0 opens , doc (showString "{") , prt 0 topdefs , doc (showString "}")])
|
||||||
MWith id opens -> prPrec i 0 (concatD [prt 0 id , doc (showString "with") , prt 0 opens])
|
MWith id opens -> prPrec i 0 (concatD [prt 0 id , doc (showString "with") , prt 0 opens])
|
||||||
MWithE ids id opens -> prPrec i 0 (concatD [prt 0 ids , doc (showString "**") , prt 0 id , doc (showString "with") , prt 0 opens])
|
MWithE includeds id opens -> prPrec i 0 (concatD [prt 0 includeds , doc (showString "**") , prt 0 id , doc (showString "with") , prt 0 opens])
|
||||||
MReuse id -> prPrec i 0 (concatD [doc (showString "reuse") , prt 0 id])
|
MReuse id -> prPrec i 0 (concatD [doc (showString "reuse") , prt 0 id])
|
||||||
MUnion includeds -> prPrec i 0 (concatD [doc (showString "union") , prt 0 includeds])
|
MUnion includeds -> prPrec i 0 (concatD [doc (showString "union") , prt 0 includeds])
|
||||||
|
|
||||||
|
|
||||||
instance Print Extend where
|
instance Print Extend where
|
||||||
prt i e = case e of
|
prt i e = case e of
|
||||||
Ext ids -> prPrec i 0 (concatD [prt 0 ids , doc (showString "**")])
|
Ext includeds -> prPrec i 0 (concatD [prt 0 includeds , doc (showString "**")])
|
||||||
NoExt -> prPrec i 0 (concatD [])
|
NoExt -> prPrec i 0 (concatD [])
|
||||||
|
|
||||||
|
|
||||||
@@ -346,6 +346,7 @@ instance Print Exp where
|
|||||||
ETyped exp0 exp -> prPrec i 4 (concatD [doc (showString "<") , prt 0 exp0 , doc (showString ":") , prt 0 exp , doc (showString ">")])
|
ETyped exp0 exp -> prPrec i 4 (concatD [doc (showString "<") , prt 0 exp0 , doc (showString ":") , prt 0 exp , doc (showString ">")])
|
||||||
EProj exp label -> prPrec i 3 (concatD [prt 3 exp , doc (showString ".") , prt 0 label])
|
EProj exp label -> prPrec i 3 (concatD [prt 3 exp , doc (showString ".") , prt 0 label])
|
||||||
EQConstr id0 id -> prPrec i 3 (concatD [doc (showString "{0") , prt 0 id0 , doc (showString ".") , prt 0 id , doc (showString "}0")]) -- H
|
EQConstr id0 id -> prPrec i 3 (concatD [doc (showString "{0") , prt 0 id0 , doc (showString ".") , prt 0 id , doc (showString "}0")]) -- H
|
||||||
|
EQCons id0 id -> prPrec i 3 (concatD [doc (showString "%") , prt 0 id0 , doc (showString ".") , prt 0 id])
|
||||||
EQCons id0 id -> prPrec i 3 (concatD [doc (showString "%") , prt 0 id0 , doc (showString ".") , prt 0 id , doc (showString "%")])
|
EQCons id0 id -> prPrec i 3 (concatD [doc (showString "%") , prt 0 id0 , doc (showString ".") , prt 0 id , doc (showString "%")])
|
||||||
EApp exp0 exp -> prPrec i 2 (concatD [prt 2 exp0 , prt 3 exp])
|
EApp exp0 exp -> prPrec i 2 (concatD [prt 2 exp0 , prt 3 exp])
|
||||||
ETable cases -> prPrec i 2 (concatD [doc (showString "table") , doc (showString "{") , prt 0 cases , doc (showString "}")])
|
ETable cases -> prPrec i 2 (concatD [doc (showString "table") , doc (showString "{") , prt 0 cases , doc (showString "}")])
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
-- Stability : (stable)
|
-- Stability : (stable)
|
||||||
-- Portability : (portable)
|
-- Portability : (portable)
|
||||||
--
|
--
|
||||||
-- > CVS $Date: 2005/05/25 10:42:00 $
|
-- > CVS $Date: 2005/05/26 14:18:18 $
|
||||||
-- > CVS $Author: bringert $
|
-- > CVS $Author: aarne $
|
||||||
-- > CVS $Revision: 1.23 $
|
-- > CVS $Revision: 1.24 $
|
||||||
--
|
--
|
||||||
-- based on the skeleton Haskell module generated by the BNF converter
|
-- based on the skeleton Haskell module generated by the BNF converter
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
@@ -112,7 +112,7 @@ transModDef x = case x of
|
|||||||
opens' <- mapM transOpen opens
|
opens' <- mapM transOpen opens
|
||||||
return (id', GM.ModWith mtyp' mstat' m' [] opens')
|
return (id', GM.ModWith mtyp' mstat' m' [] opens')
|
||||||
MWithE extends m opens -> do
|
MWithE extends m opens -> do
|
||||||
extends' <- mapM transIdent extends
|
extends' <- mapM transIncludedExt extends
|
||||||
m' <- transIdent m
|
m' <- transIdent m
|
||||||
opens' <- mapM transOpen opens
|
opens' <- mapM transOpen opens
|
||||||
return (id', GM.ModWith mtyp' mstat' m' extends' opens')
|
return (id', GM.ModWith mtyp' mstat' m' extends' opens')
|
||||||
@@ -170,7 +170,7 @@ transTransfer x = case x of
|
|||||||
|
|
||||||
transExtend :: Extend -> Err [Ident]
|
transExtend :: Extend -> Err [Ident]
|
||||||
transExtend x = case x of
|
transExtend x = case x of
|
||||||
Ext ids -> mapM transIdent ids
|
Ext ids -> mapM transIncludedExt ids
|
||||||
NoExt -> return []
|
NoExt -> return []
|
||||||
|
|
||||||
transOpens :: Opens -> Err [GM.OpenSpec Ident]
|
transOpens :: Opens -> Err [GM.OpenSpec Ident]
|
||||||
@@ -193,8 +193,14 @@ transQualOpen x = case x of
|
|||||||
transIncluded :: Included -> Err (Ident,[Ident])
|
transIncluded :: Included -> Err (Ident,[Ident])
|
||||||
transIncluded x = case x of
|
transIncluded x = case x of
|
||||||
IAll i -> liftM (flip (curry id) []) $ transIdent i
|
IAll i -> liftM (flip (curry id) []) $ transIdent i
|
||||||
ISome i ids -> liftM2 (curry id) (transIdent i) (mapM transIdent ids)
|
ISome i ids -> liftM2 (curry id) (transIdent i) (mapM transIdent ids)
|
||||||
|
IMinus i ids -> liftM2 (curry id) (transIdent i) (mapM transIdent ids) ----
|
||||||
|
|
||||||
|
transIncludedExt :: Included -> Err Ident ---- (Ident,[Ident])
|
||||||
|
transIncludedExt x = case x of
|
||||||
|
IAll i -> transIdent i
|
||||||
|
ISome i ids -> transIdent i
|
||||||
|
IMinus i ids -> transIdent i
|
||||||
|
|
||||||
transAbsDef :: TopDef -> Err (Either [(Ident, G.Info)] [GO.Option])
|
transAbsDef :: TopDef -> Err (Either [(Ident, G.Info)] [GO.Option])
|
||||||
transAbsDef x = case x of
|
transAbsDef x = case x of
|
||||||
|
|||||||
Reference in New Issue
Block a user