packages feed

ruler-0.4.0.0: src/AS1/SchemeDpd.cag

-------------------------------------------------------------------------
-- Scheme dpds
-------------------------------------------------------------------------

%%[1 ag

ATTR AllDecl AllAttrIntroDecl [ | | gathScDpds USE {++} {[]}: {[(Nm,Nm)]} ]

SEM AttrIntroDecl
  | Scheme          lhs     .   gathScDpds  =   [(@lhs.scmNm,@nm)]

{-
SEM Decl
  | Scheme          lhs     .   gathScDpds  =   [(@nm,@nm)] ++ @decls.gathScDpds
-}

-------------------------------------------------------------------------
-- Scheme dpd graph
-------------------------------------------------------------------------

ATTR AllDecl [ scDpdGr: {DpdGr Nm} | | ]

SEM AGItf
  | AGItf           loc     .   scDpdGr     =   let missing = gamKeys @decls.gathScGam \\ map fst @decls.gathScDpds
                                                in  mkDpdGrFromAssocWithMissing missing @decls.gathScDpds

-------------------------------------------------------------------------
-- Error checks for mutual dependencies
-------------------------------------------------------------------------

SEM AGItf
  | AGItf           loc     .   errMutSc    =   dgCheckSCCMutuals (Err_MutDpds emptySPos "toplevel" "scheme") @scDpdGr

%%]