void HeartBeat(char* args_){ Serial.println(getPositionString(gpsData)); }
void DebugPrintVisitor::visit(VariableNode& var) { os << "[Variable]" << var.name() << getPositionString(var) << std::endl; }
void DebugPrintVisitor::visit(FunctionNode& func) { os << "[Function]" << func.name() << getPositionString(func) << std::endl; }
void DebugPrintVisitor::visit(NodeList& list) { os << "[List]" << list.name() << getPositionString(list) << std::endl; }
void DebugPrintVisitor::visit(DestructorNode& destructor) { os << "[Destructor]" << getPositionString(destructor) << std::endl; }
void DebugPrintVisitor::visit(ConstructorNode& constructor) { os << "[Constructor]" << getPositionString(constructor) << std::endl; }
void DebugPrintVisitor::visit(ClassNode& cl) { os << "[Class]" << cl.name() << getPositionString(cl) << std::endl; }
void DebugPrintVisitor::visit(ImportNode& import) { os << "[Import]" << import.name() << getPositionString(import) << std::endl; }
void DebugPrintVisitor::visit(ModuleNode& module) { os << "[Module]" << module.name() << getPositionString(module) << std::endl; }
static std::string getPositionString(const WithDefinitionNode& node) { return getPositionString(*static_cast<const Node*>(&node)) + " def" + to_string(node.getDefinitionPosition()); }