romance Inf ; %, included

This commit is contained in:
aarne
2005-05-26 13:18:17 +00:00
parent 0cc8911950
commit 63ee4ef12d
10 changed files with 522 additions and 490 deletions

View File

@@ -41,13 +41,13 @@ data ModType =
data ModBody =
MBody Extend Opens [TopDef]
| MWith Ident [Open]
| MWithE [Ident] Ident [Open]
| MWithE [Included] Ident [Open]
| MReuse Ident
| MUnion [Included]
deriving (Eq,Ord,Show)
data Extend =
Ext [Ident]
Ext [Included]
| NoExt
deriving (Eq,Ord,Show)
@@ -76,6 +76,7 @@ data QualOpen =
data Included =
IAll Ident
| ISome Ident [Ident]
| IMinus Ident [Ident]
deriving (Eq,Ord,Show)
data Def =

View File

@@ -40,13 +40,13 @@ MTTransfer. ModType ::= "transfer" Ident ":" Open "->" Open ;
MBody. ModBody ::= Extend Opens "{" [TopDef] "}" ;
MWith. ModBody ::= Ident "with" [Open] ;
MWithE. ModBody ::= [Ident] "**" Ident "with" [Open] ;
MWithE. ModBody ::= [Included] "**" Ident "with" [Open] ;
MReuse. ModBody ::= "reuse" Ident ;
MUnion. ModBody ::= "union" [Included] ;
separator TopDef "" ;
Ext. Extend ::= [Ident] "**" ;
Ext. Extend ::= [Included] "**" ;
NoExt. Extend ::= ;
separator Open "," ;
@@ -66,8 +66,9 @@ QOInterface. QualOpen ::= "interface" ;
separator Included "," ;
IAll. Included ::= Ident ;
ISome. Included ::= Ident "[" [Ident] "]" ;
IAll. Included ::= Ident ;
ISome. Included ::= Ident "[" [Ident] "]" ;
IMinus. Included ::= Ident "-" "[" [Ident] "]" ;
-- definitions after the $oper$ keywords
@@ -167,7 +168,7 @@ ETyped. Exp4 ::= "<" Exp ":" Exp ">" ; -- typing, used for annotations
EProj. Exp3 ::= Exp3 "." Label ;
EQConstr. Exp3 ::= "{" Ident "." Ident "}" ; -- qualified constructor
EQCons. Exp3 ::= "%" Ident "." Ident "%" ; -- qualified constant
EQCons. Exp3 ::= "%" Ident "." Ident ; -- qualified constant
EApp. Exp2 ::= Exp2 Exp3 ;
ETable. Exp2 ::= "table" "{" [Case] "}" ;

View File

@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/05/25 10:41:59 $
-- > CVS $Author: bringert $
-- > CVS $Revision: 1.20 $
-- > CVS $Date: 2005/05/26 14:18:17 $
-- > CVS $Author: aarne $
-- > CVS $Revision: 1.21 $
--
-- 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)))
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
forName (MTConcrete a) = tri a

File diff suppressed because one or more lines are too long

View File

@@ -147,14 +147,14 @@ instance Print ModBody where
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 "}")])
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])
MUnion includeds -> prPrec i 0 (concatD [doc (showString "union") , prt 0 includeds])
instance Print Extend where
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 [])
@@ -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 ">")])
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
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 "%")])
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 "}")])

View File

@@ -5,9 +5,9 @@
-- Stability : (stable)
-- Portability : (portable)
--
-- > CVS $Date: 2005/05/25 10:42:00 $
-- > CVS $Author: bringert $
-- > CVS $Revision: 1.23 $
-- > CVS $Date: 2005/05/26 14:18:18 $
-- > CVS $Author: aarne $
-- > CVS $Revision: 1.24 $
--
-- based on the skeleton Haskell module generated by the BNF converter
-----------------------------------------------------------------------------
@@ -112,7 +112,7 @@ transModDef x = case x of
opens' <- mapM transOpen opens
return (id', GM.ModWith mtyp' mstat' m' [] opens')
MWithE extends m opens -> do
extends' <- mapM transIdent extends
extends' <- mapM transIncludedExt extends
m' <- transIdent m
opens' <- mapM transOpen opens
return (id', GM.ModWith mtyp' mstat' m' extends' opens')
@@ -170,7 +170,7 @@ transTransfer x = case x of
transExtend :: Extend -> Err [Ident]
transExtend x = case x of
Ext ids -> mapM transIdent ids
Ext ids -> mapM transIncludedExt ids
NoExt -> return []
transOpens :: Opens -> Err [GM.OpenSpec Ident]
@@ -193,8 +193,14 @@ transQualOpen x = case x of
transIncluded :: Included -> Err (Ident,[Ident])
transIncluded x = case x of
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 x = case x of