Preorder visitor for the stela AST. More...
#include <stelaVisitor.hpp>
Public Member Functions | |
| void | work (stela &root) |
| virtual nbool | onVisit (const stelaVisitInfo &i, valStela &it) |
| virtual void | onLeave (const stelaVisitInfo &i, valStela &it) |
| virtual void | visit (const stelaVisitInfo &i, stela &it) |
| virtual nbool | onVisit (const stelaVisitInfo &i, stela &it) |
| virtual void | onLeave (const stelaVisitInfo &i, stela &it) |
| virtual void | onTraverse (const stelaVisitInfo &i, stela &it) |
Public Member Functions inherited from by::typeProvidable | |
| nbool | operator== (const me &rhs) const |
| nbool | operator!= (const me &rhs) const |
| virtual const type & | getType () const =0 |
| nbool | isSub (const type &it) const |
| nbool | isSub (const type *it) const BY_SIDE_FUNC(isSub) |
| nbool | isSub (const me &it) const |
| nbool | isSub (const me *it) const BY_SIDE_FUNC(isSub) |
| nbool | isSuper (const type &it) const |
| nbool | isSuper (const type *it) const BY_SIDE_FUNC(isSuper) |
| nbool | isSuper (const me &it) const |
| nbool | isSuper (const me *it) const BY_SIDE_FUNC(isSuper) |
| template<typename T > | |
| nint | isSub () const |
| template<typename T > | |
| nint | isSuper () const |
| template<typename T > | |
| T * | cast () |
| template<typename T > | |
| const T * | cast () const BY_CONST_FUNC(cast< T >()) virtual void *cast(const type &to) |
| Safe cast to target type using type hierarchy information. | |
| const void * | cast (const type &to) const BY_CONST_FUNC(cast(to)) void *cast(const type *it) BY_SIDE_FUNC(cast) |
Public Member Functions inherited from by::clonable | |
| virtual me * | clone () const =0 |
| virtual me * | cloneDeep () const |
| virtual void | onCloneDeep (const me &from) |
Preorder visitor for the stela AST.
Mirrors byeol's visitor in miniature. Each visit goes through three phases:
Typed overloads (onVisit(..., valStela&)) are dispatched from each subclass's accept() (injected by the VISIT macro). A type-specific override that is not provided chains up to onVisit(..., stela&) via the super typedef, matching byeol's convention.
stela trees are pure (no shared subgraphs), so unlike byeol's visitor no visited-set is maintained.