12SN/A/* 21762SN/A * Copyright (c) 2002-2005 The Regents of The University of Michigan 32SN/A * All rights reserved. 42SN/A * 52SN/A * Redistribution and use in source and binary forms, with or without 62SN/A * modification, are permitted provided that the following conditions are 72SN/A * met: redistributions of source code must retain the above copyright 82SN/A * notice, this list of conditions and the following disclaimer; 92SN/A * redistributions in binary form must reproduce the above copyright 102SN/A * notice, this list of conditions and the following disclaimer in the 112SN/A * documentation and/or other materials provided with the distribution; 122SN/A * neither the name of the copyright holders nor the names of its 132SN/A * contributors may be used to endorse or promote products derived from 142SN/A * this software without specific prior written permission. 152SN/A * 162SN/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 172SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 182SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 192SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 202SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 212SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 222SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 232SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 242SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 252SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 262SN/A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 272665Ssaidi@eecs.umich.edu * 282665Ssaidi@eecs.umich.edu * Authors: Nathan Binkert 292SN/A */ 302SN/A 311793SN/A#include <iostream> 322SN/A#include <string> 332SN/A#include <vector> 342SN/A 3556SN/A#include "base/str.hh" 362SN/A 372SN/Aint 382SN/Amain(int argc, char *argv[]) 392SN/A{ 401793SN/A using namespace std; 412SN/A 421793SN/A if (argc != 3) { 431793SN/A cout << "Usage: " << argv[0] << " <string> <token>\n"; 441793SN/A exit(1); 451793SN/A } 462SN/A 471793SN/A int i; 481793SN/A string test = argv[1]; 491793SN/A vector<string> tokens1; 501793SN/A vector<string> tokens2; 511793SN/A char token = argv[2][0]; 522SN/A 531793SN/A cout << "string = \"" << test << "\", token = \'" << token << "\'\n"; 541793SN/A cout << "testing without ignore\n"; 551793SN/A tokenize(tokens1, test, token, false); 562SN/A 571793SN/A if (tokens1.size()) { 581793SN/A int size = tokens1.size(); 591793SN/A cout << "size = " << size << "\n"; 601793SN/A for (i = 0; i < size; i++) { 611793SN/A cout << "'" << tokens1[i] << "' (" << tokens1[i].size() 621793SN/A << ")" << ((i == size - 1) ? "\n" : ", "); 631793SN/A } 641793SN/A } else { 651793SN/A cout << "no tokens" << endl; 661793SN/A } 672SN/A 681793SN/A cout << "testing with ignore\n"; 691793SN/A tokenize(tokens2, test, token, true); 702SN/A 711793SN/A if (tokens2.size()) { 721793SN/A int size = tokens2.size(); 731793SN/A cout << "size = " << size << "\n"; 741793SN/A for (i = 0; i < size; i++) { 751793SN/A cout << "'" << tokens2[i] << "' (" << tokens2[i].size() 761793SN/A << ")" << ((i == size - 1) ? "\n" : ", "); 771793SN/A } 781793SN/A } else { 791793SN/A cout << "no tokens" << endl; 801793SN/A } 811793SN/A 821793SN/A return 0; 832SN/A} 84