]> matita.cs.unibo.it Git - helm.git/blob - helm/DEVEL/mathml_editor/src/TTokenizer.cc
Bug fixed: wrong exception was raised (instead of returning false)
[helm.git] / helm / DEVEL / mathml_editor / src / TTokenizer.cc
1 /* This file is part of EdiTeX, an editor of mathematical
2  * expressions based on TeX syntax.
3  * 
4  * Copyright (C) 2002-2003 Luca Padovani <lpadovan@cs.unibo.it>,
5  *                    2003 Paolo Marinelli <pmarinel@cs.unibo.it>.
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  *
21  * For more information, please visit the project's home page
22  * http://helm.cs.unibo.it/editex/
23  * or send an email to <lpadovan@cs.unibo.it>
24  */
25
26 #include <algorithm>
27 #include <cassert>
28
29 #include "TTokenizer.hh"
30 #include "TPushLexer.hh"
31
32 std::vector<TToken>
33 TTokenizer::tokenize(const std::string& s)
34 {  
35   TPushLexer lexer(logger, *this);
36
37   tokens.clear();
38   for (std::string::const_iterator p = s.begin();
39        p != s.end();
40        p++)
41     lexer.push(*p);
42   
43   lexer.flush();
44
45   std::vector<TToken> res;
46   res.reserve(tokens.size());
47   copy(tokens.begin(), tokens.end(), back_inserter(res));
48
49   return res;
50 }
51
52 void
53 TTokenizer::reset()
54 {
55   assert(0);
56 }
57
58 void
59 TTokenizer::push(const TToken& token)
60 {
61   tokens.push_back(token);
62 }
63
64 std::string
65 TTokenizer::drop(bool alt)
66 {
67   assert(0);
68   return "";
69 }