int main() { Node* AppleCo = BuildAppleCo(); PrintVisitor* pVisitor = new PrintVisitor(); AppleCo->Accept(pVisitor); cout<<"______________________"<<endl << endl; SearchVisitor* sVisitor = new SearchVisitor(); string craigQuery="Craig Federighi"; sVisitor->setQuery(craigQuery); AppleCo->Accept(sVisitor); sVisitor->PrintResults(); sVisitor->Reset(); string ipadQuery="iPhone"; sVisitor->setQuery(ipadQuery); AppleCo->Accept(sVisitor); sVisitor->PrintResults(); sVisitor->Reset(); string philQuery="Phillip"; sVisitor->setQuery(philQuery); AppleCo->Accept(sVisitor); sVisitor->PrintResults(); sVisitor->Reset(); string cookQuery="Cook"; sVisitor->setQuery(cookQuery); AppleCo->Accept(sVisitor); sVisitor->PrintResults(); sVisitor->Reset(); string DNEQuery="DNE"; sVisitor->setQuery(DNEQuery); AppleCo->Accept(sVisitor); sVisitor->PrintResults(); sVisitor->Reset(); cout<<"______________________"<<endl << endl; CountVisitor* cVisitor = new CountVisitor(); AppleCo->Accept(cVisitor); cVisitor->PrintResults(); cVisitor->Reset(); delete AppleCo; delete cVisitor; delete sVisitor; delete pVisitor; return 0; }
std::string NodeToPosixString(const Node &node) { PosixWordsPrinter printer; node.Accept(printer); return printer.GetString(); }
std::string NodeToRawString(const Node &node) { std::stringstream ss; StringPrinter printer{ss}; node.Accept(printer); return ss.str(); }