本文整理汇总了C++中Toker::setMode方法的典型用法代码示例。如果您正苦于以下问题:C++ Toker::setMode方法的具体用法?C++ Toker::setMode怎么用?C++ Toker::setMode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Toker
的用法示例。
在下文中一共展示了Toker::setMode方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
void main()
{
try
{
std::stack<PNode<XMLValue>*> *nStack = new std::stack<PNode<XMLValue>*>;
PNode<XMLValue>* rootnode = new PNode<XMLValue>(XMLValue(XMLValue::TAG,"Document"));
XMLTree* xtree = new XMLTree(rootnode);
ParserState* ps = new ParserState;
Toker* pToker = new Toker;
pToker->setMode(Toker::xml); //XML parser mode
XmlParts* pSemi = new XmlParts(pToker);
Parser* pParser = new Parser(pSemi);
ElementEnd* pElementendrule = new ElementEnd(nStack,ps);
ElementStart* pElementstartrule = new ElementStart(nStack,ps);
ElementSelfClosed* pElementselfcrule = new ElementSelfClosed(nStack,ps);
Text* ptextrule = new Text(nStack,ps);
Comment* pCommentrule = new Comment(nStack,ps);
ProcInstr* pIinstrrule = new ProcInstr(nStack,ps);
EndFound* pEndact = new EndFound(nStack,xtree);
StartFound* pStartact = new StartFound(nStack,xtree);
SelfClosedFound* pSelfClosedact = new SelfClosedFound(nStack,xtree);
TextFound* pTextact = new TextFound(nStack,xtree);
CommentFound* pCommentact = new CommentFound(nStack,xtree);
ProcInstrFound* pInstract = new ProcInstrFound(nStack,xtree);
pElementendrule->addAction(pEndact);
pElementstartrule->addAction(pStartact);
pElementselfcrule->addAction(pSelfClosedact);
ptextrule->addAction(pTextact);
pCommentrule->addAction(pCommentact);
pIinstrrule->addAction(pInstract);
pParser->addRule(pElementendrule);
pParser->addRule(pElementstartrule);
pParser->addRule(pElementselfcrule);
pParser->addRule(ptextrule);
pParser->addRule(pCommentrule);
pParser->addRule(pIinstrrule);
nStack->push(rootnode);
if(pParser)
{
if(! pToker->attach("..\\LectureNote.xml"))
{
std::cout << "\n could not open file " << std::endl;
return;
}
}
while(pParser->next())
pParser->parse();
//display the tree and the rebuilt xml
XMLDisplay disply(xtree);
//generate the string of tree and rebuilt xml
disply.buildTreeDisplay();
disply.rebuildXML();
//attach the output file to the display object
disply.AttachFile("..\\output.txt");
//display them
std::cout<<"=======================Parser Tree====================="<<std::endl;
std::cout<<disply.OutputTree();
std::cout << "\n\n";
std::cout<<"=====================Rebuild XML====================="<<std::endl;
std::cout<<disply.OutputXML();
delete pEndact;
delete pStartact;
delete pSelfClosedact;
delete pTextact;
delete pCommentact;
delete pInstract;
delete pElementendrule;
delete pElementstartrule;
delete pElementselfcrule;
delete ptextrule;
delete pCommentrule;
delete pIinstrrule;
delete pToker;
delete pSemi;
delete pParser;
delete ps;
delete nStack;
xtree->remove(xtree->getroot());
std::vector< PNode<XMLValue>* > deletednodes = xtree->getdeletednodes();
for(size_t i = 0; i < deletednodes.size(); ++i)
delete deletednodes[i];
delete xtree;
//.........这里部分代码省略.........
示例2: main
int main(int argc, char* argv[])
{
std::cout << "\n Testing Tokenizer class\n "
<< std::string(25, '=') << std::endl;
std::cout
<< "\n Note that comments and quotes are returned as single tokens\n\n";
// collecting tokens from a string
Toker t_fromStr("tokens from a string: -> int x; /* a comment */", false);
std::string tok;
do
{
tok = t_fromStr.getTok();
std::cout << " " << tok;
} while (tok != "");
std::cout << "\n\n";
// collecting tokens from files, named on the command line
if (argc < 2)
{
std::cout
<< "\n please enter name of file to process on command line\n\n";
return 1;
}
for (int i = 1; i<argc; ++i)
{
std::cout << "\n Processing file " << argv[i];
std::cout << "\n " << std::string(16 + strlen(argv[i]), '-') << "\n";
try
{
Toker t;
t.setMode(Toker::xml); // comment out to show tokenizing for code
// t.setSingleCharTokens("<>"); // will return same results as above for XML
if (!t.attach(argv[i]))
{
std::cout << "\n can't open file " << argv[i] << "\n\n";
continue;
}
t.returnComments(); // remove this statement to discard comment tokens
std::string temp;
do
{
temp = t.getTok();
std::cout << " ln: " << t.lines() << ", br lev: "
<< t.braceLevel() << ", tok size: " << std::setw(3) << temp.length() << " -- ";
if (temp != "\n")
std::cout << temp << std::endl;
else
std::cout << "newline\n";
} while (temp != "");
}
catch (std::exception& ex)
{
std::cout << " " << ex.what() << "\n\n";
}
}
}