shuffle-0.1.1.0: src/UHC/Shuffle/AspectExprEval.ag
-------------------------------------------------------------------------
-- Evaluation of AspectExpr, given a set of AspectRef
-------------------------------------------------------------------------
MODULE {UHC.Shuffle.AspectExprEval} {aspexpIsAccepted}
{
import qualified Data.Set as Set
import qualified Data.Map as Map
import UHC.Shuffle.AspectExpr
}
INCLUDE "AspectExprAbsSyn.ag"
WRAPPER AGAspectExprItf
{
wrapAGAspectExpr_T :: AspectRefReqd -> T_AGAspectExprItf -> Syn_AGAspectExprItf
wrapAGAspectExpr_T givenRefs d
= wrap_AGAspectExprItf d
(Inh_AGAspectExprItf
{ givenRefs_Inh_AGAspectExprItf = givenRefs
})
wrapAspectExpr :: AspectRefReqd -> AspectExpr -> Syn_AGAspectExprItf
wrapAspectExpr givenRefs d = wrapAGAspectExpr_T givenRefs (sem_AGAspectExprItf (AGAspectExprItf_AGItf d))
aspexpIsAccepted :: AspectRefReqd -> AspectExpr -> Bool
aspexpIsAccepted givenRefs d
= (isAccepted_Syn_AGAspectExprItf r)
where r = wrapAspectExpr givenRefs d
}
-------------------------------------------------------------------------
-- CRef subst in AspectExpr
-------------------------------------------------------------------------
ATTR AspectExpr AGAspectExprItf [ givenRefs: AspectRefReqd | | isAccepted: Bool ]
SEM AspectExpr
| True lhs . isAccepted = True
| Requires lhs . isAccepted = @asp `Set.member` @lhs.givenRefs
| Or lhs . isAccepted = @asp1.isAccepted || @asp2.isAccepted
| And lhs . isAccepted = @asp1.isAccepted && @asp2.isAccepted
| Not lhs . isAccepted = not @asp.isAccepted