Safe Haskell | None |
---|---|
Language | Haskell2010 |
A few helpers to work with the AST annotations
- removeAnnotations :: Traversable t => t a -> t ()
- reannotate :: Traversable t => (a -> b) -> t a -> t b
- addExtraAnnotationField :: Traversable t => b -> t a -> t (a, b)
- removeExtraAnnotationField :: Traversable t => t (a, b) -> t a
- assignUniqueIds :: Traversable t => Int -> t a -> (t (a, Int), Int)
- class HasAnnotation a where
- getAnnotation :: a b -> b
- setAnnotation :: b -> a b -> a b
- withAnnotation :: HasAnnotation a => (b -> b) -> a b -> a b
Documentation
removeAnnotations :: Traversable t => t a -> t () Source
Removes annotations from a tree
reannotate :: Traversable t => (a -> b) -> t a -> t b Source
Changes all the labels in the tree to another one, given by a function.
addExtraAnnotationField :: Traversable t => b -> t a -> t (a, b) Source
add an extra field to the AST labels (the label would look like
(a, b)
)
removeExtraAnnotationField :: Traversable t => t (a, b) -> t a Source
remove an extra field
:: Traversable t | |
=> Int | starting id |
-> t a | tree root |
-> (t (a, Int), Int) |
Assigns unique numeric (Int) ids to each node in the AST. Returns a pair: the tree annotated with UID's and the last ID that was assigned.
class HasAnnotation a where Source
Things that have annotations -- for example, nodes in a syntax tree
getAnnotation :: a b -> b Source
Returns the annotation of the root of the tree
setAnnotation :: b -> a b -> a b Source
Sets the annotation of the root of the tree
withAnnotation :: HasAnnotation a => (b -> b) -> a b -> a b Source
Modify the annotation of the root node of the syntax tree