LRDE Tiger Compiler
1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
|
Root class of all Ast visitors. More...
#include <visitor.hh>
Public Member Functions | |
virtual void | operator() (typename Const< Ast >::type &e) |
The entry point: visit e. | |
virtual void | operator() (typename Const< ArrayExp >::type &)=0 |
virtual void | operator() (typename Const< ArrayTy >::type &)=0 |
virtual void | operator() (typename Const< AssignExp >::type &)=0 |
virtual void | operator() (typename Const< BreakExp >::type &)=0 |
virtual void | operator() (typename Const< CallExp >::type &)=0 |
virtual void | operator() (typename Const< CastExp >::type &)=0 |
virtual void | operator() (typename Const< CastVar >::type &)=0 |
virtual void | operator() (typename Const< ClassTy >::type &)=0 |
virtual void | operator() (typename Const< DecsList >::type &)=0 |
virtual void | operator() (typename Const< Field >::type &)=0 |
virtual void | operator() (typename Const< FieldInit >::type &)=0 |
virtual void | operator() (typename Const< FieldVar >::type &)=0 |
virtual void | operator() (typename Const< ForExp >::type &)=0 |
virtual void | operator() (typename Const< FunctionDec >::type &)=0 |
virtual void | operator() (typename Const< IfExp >::type &)=0 |
virtual void | operator() (typename Const< IntExp >::type &)=0 |
virtual void | operator() (typename Const< LetExp >::type &)=0 |
virtual void | operator() (typename Const< MethodCallExp >::type &)=0 |
virtual void | operator() (typename Const< MethodDec >::type &)=0 |
virtual void | operator() (typename Const< NameTy >::type &)=0 |
virtual void | operator() (typename Const< NilExp >::type &)=0 |
virtual void | operator() (typename Const< ObjectExp >::type &)=0 |
virtual void | operator() (typename Const< OpExp >::type &)=0 |
virtual void | operator() (typename Const< RecordExp >::type &)=0 |
virtual void | operator() (typename Const< RecordTy >::type &)=0 |
virtual void | operator() (typename Const< SeqExp >::type &)=0 |
virtual void | operator() (typename Const< SimpleVar >::type &)=0 |
virtual void | operator() (typename Const< StringExp >::type &)=0 |
virtual void | operator() (typename Const< SubscriptVar >::type &)=0 |
virtual void | operator() (typename Const< TypeDec >::type &)=0 |
virtual void | operator() (typename Const< VarDec >::type &)=0 |
virtual void | operator() (typename Const< WhileExp >::type &)=0 |
virtual void | operator() (typename Const< FunctionDecs >::type &)=0 |
virtual void | operator() (typename Const< MethodDecs >::type &)=0 |
virtual void | operator() (typename Const< TypeDecs >::type &)=0 |
virtual void | operator() (typename Const< VarDecs >::type &)=0 |
template<class E > | |
void | operator() (E *e) |
Helper to visit nodes manipulated via a pointer. | |
Ctor & dtor. | |
virtual | ~GenVisitor () |
Destroy a GenVisitor. |
Protected Member Functions | |
template<typename E > | |
void | accept (E *e) |
Root class of all Ast visitors.
GenVisitor<CONSTIFY> is the root class of all Ast visitors.
|
virtual |
Destroy a GenVisitor.
|
protected |
A convenient shortcut for recurring code like this:
However, the drawback of this approach is that it doesn't take care of the constness, and any const violation will be reported within the body of this method, not at its corresponding call site.
We cannot use the misc/select_const.hh approach here, since the compiler cannot resolve a function overloaded or specialized on an associated type of a template. E.g., writing accept like this:
won't work directly. Of course, one can help the compiler, providing it with E
but this is painful.
|
virtual |
The entry point: visit e.
Reimplemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenNonObjectVisitor< Const >, and ast::GenObjectVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenNonObjectVisitor< Const >, and ast::GenObjectVisitor< Const >.
|
pure virtual |
Implemented in ast::GenNonObjectVisitor< Const >, and ast::GenObjectVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenNonObjectVisitor< Const >, and ast::GenObjectVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
Implemented in ast::GenDefaultVisitor< Const >.
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
void ast::GenVisitor< Const >::operator() | ( | E * | e | ) |
Helper to visit nodes manipulated via a pointer.