Annotations for syntax trees
- data Ann info expr a where
- Ann :: {
- annInfo :: info (EvalResult a)
- annExpr :: expr a
- Ann :: {
- type AnnSTF info dom a = ASTF (Ann info dom) a
- injectAnn :: (sub :<: sup, ConsType a) => info (EvalResult a) -> sub a -> AST (Ann info sup) a
- projectAnn :: sub :<: sup => AST (Ann info sup) a -> Maybe (info (EvalResult a), sub a)
- getInfo :: AST (Ann info sup) a -> info (EvalResult a)
Documentation
data Ann info expr a whereSource
Annotating an expression with arbitrary information.
This can be used to annotate every node of a syntax tree, which is done by changing
AST dom a
to
AST (Ann info dom) a
Injection/projection of an annotated tree is done using
injectAnn
/ projectAnn
.
Ann :: info (EvalResult a) -> expr a -> Ann info expr a | |
|
injectAnn :: (sub :<: sup, ConsType a) => info (EvalResult a) -> sub a -> AST (Ann info sup) aSource
projectAnn :: sub :<: sup => AST (Ann info sup) a -> Maybe (info (EvalResult a), sub a)Source
getInfo :: AST (Ann info sup) a -> info (EvalResult a)Source