packages feed

ruler-0.4.0.0: src/Expr/NmSAG.cag

-------------------------------------------------------------------------
-- Expr name occurrences
-------------------------------------------------------------------------

%%[1 ag

ATTR AllExpr AGExprItf [ | | nmS USE {`Set.union`} {Set.empty}: {Set.Set Nm} ]

SEM Expr
  | Var             lhs     .   nmS         =   Set.singleton @nm
  | Op              lhs     .   nmS         =   (@nm `Set.delete` @nmExpr.nmS) `Set.union` @lExpr.nmS `Set.union` @rExpr.nmS

SEM ANm
  | Loc             lhs     .   nmS         =   Set.singleton @nm

%%]