packages feed

ruler-0.4.0.0: src/AS1/Imports.cag

-------------------------------------------------------------------------
-- Imports of Ruler module
-------------------------------------------------------------------------

%%[1 hs module (AS1.Imports)
%%]

%%[1 hs export (ImpModMp, as1Imports, as1JoinAGItfs)
%%]

%%[1 hs import (qualified Data.Map as Map, Common, AbsSyn.AbsSyn1)
%%]

-------------------------------------------------------------------------
-- Inclusion of split off parts
-------------------------------------------------------------------------

%%[1 ag import ({AbsSyn/AbsSyn1AG}, {AbsSyn/CommonAG}, {Expr/AbsSynAG})
%%]

-------------------------------------------------------------------------
-- Interfacing to AST
-------------------------------------------------------------------------

%%[1 ag
WRAPPER AGItf
%%]

%%[1 hs
type ImpModMp = Map.Map Nm SPos

as1Imports :: AGItf -> ImpModMp
as1Imports r
  = (impModMp_Syn_AGItf r2)
  where r1 = sem_AGItf r
        r2 = wrap_AGItf r1
                (Inh_AGItf )

as1JoinAGItfs :: [AGItf] -> AGItf
as1JoinAGItfs ais = AGItf_AGItf $ concat $ [ ds | (AGItf_AGItf ds) <- ais ]
%%]

-------------------------------------------------------------------------
-- Imports
-------------------------------------------------------------------------

%%[1 ag
ATTR AllDecl AGItf [ | | impModMp USE {`Map.union`} {Map.empty}: {ImpModMp} ]

SEM Decl
  | Include         lhs     .   impModMp    =   Map.singleton @nm @pos
%%]