void PrettyPrinter::VisitCallEval(CallEval* node) { VisitCall(node); }
void UsageComputer::VisitCallEval(CallEval* node) { VisitCall(node); }
void UsageComputer::VisitCallNew(CallNew* node) { VisitCall(node); }
void Visitor::Visit(Element const& element) { bool isElement = false; switch(element.Type()) { // Constant Tokens case Types::NIL: VisitNil(); break; case Types::TRUE_: VisitTrue(); break; case Types::FALSE_: VisitFalse(); break; case Types::STRING: { String S = CastToString(element, isElement); VisitString(S); } break; case Types::SUPERSTRING: { SuperString S = CastToSuperString(element, isElement); VisitSuperString(S); } break; case Types::NUMBER: { Number N = CastToNumber(element, isElement); VisitNumber(N); } break; case Types::CONTAINER: { Container C = CastToContainer(element, isElement); VisitContainer(C); } break; case Types::BUILTIN: { Builtin B = CastToBuiltin(element, isElement); VisitBuiltin(B); } break; case Types::CALL: { Funcall F = CastToFuncall(element, isElement); VisitCall(F); } break; case Types::FUNCTION: { Function F = CastToFunction(element, isElement); VisitFunction(F); } break; case Types::IF: { If F = CastToIf(element, isElement); VisitIf(F); } break; case Types::SET: { Set F = CastToSet(element, isElement); VisitSet(F); } break; case Types::IMPERATIVE: { Imperative F = CastToImperative(element, isElement); VisitImperative(F); } case Types::CASE: { Case C = CastToCase(element, isElement); VisitCase(C); } break; }; }