KSquare Utilities
KKB::Tokenizer Class Reference

Class is meant to break down a stream into a set of logical tokens. More...

#include <Tokenizer.h>

Public Member Functions

 Tokenizer (TokenBufferPtr _in)
 
 Tokenizer (const KKStr &_str)
 
 Tokenizer (const KKStr &_fileName, bool &_fileOpened)
 
 ~Tokenizer ()
 
void DefineOperatorChars (char *const _operatorChars)
 
bool EndOfFile ()
 
KKStrPtr GetNextToken ()
 
KKStrListPtr GetNextTokens (const KKStr &delToken)
 Returns a list of tokens up to and including the first occurrence of 'delToken'. More...
 
KKStrConstPtr operator[] (kkuint32 idx)
 
KKStrConstPtr Peek (kkuint32 idx)
 
void PushTokenOnFront (KKStrPtr t)
 

Detailed Description

Class is meant to break down a stream into a set of logical tokens.

Author
Kurt Kramer

This class was originally created while taking Non Linear Systems. It breaks up a source KKStr or text file into logical tokens. You can create your own source of characters by creating a Class derived from KKB::TokenBuffer.

Definition at line 23 of file Tokenizer.h.

Constructor & Destructor Documentation

Tokenizer::Tokenizer ( TokenBufferPtr  _in)

Definition at line 22 of file Tokenizer.cpp.

References Tokenizer().

Referenced by Tokenizer().

22  :
23 
24  atEndOfFile (false),
25  in (_in),
26  secondCharAtEndOfFile (false),
27  operatorChars (NULL),
28  tokenList (true),
29  weOwnTokenBuffer (false)
30 {
31  Initialize ();
32 }
Tokenizer::Tokenizer ( const KKStr _str)

Definition at line 36 of file Tokenizer.cpp.

References KKB::TokenBufferStr::TokenBufferStr(), and Tokenizer().

Referenced by Tokenizer().

36  :
37 
38  atEndOfFile (false),
39  in (NULL),
40  secondCharAtEndOfFile (false),
41  operatorChars (NULL),
42  tokenList (true),
43  weOwnTokenBuffer (false)
44 {
45  in = new TokenBufferStr (_str);
46  weOwnTokenBuffer = true;
47  Initialize ();
48 }
Tokenizer::Tokenizer ( const KKStr _fileName,
bool &  _fileOpened 
)

Definition at line 52 of file Tokenizer.cpp.

References KKB::TokenBufferStream::TokenBufferStream(), Tokenizer(), and KKB::TokenBuffer::Valid().

Referenced by Tokenizer().

54  :
55 
56  atEndOfFile (false),
57  in (NULL),
58  secondCharAtEndOfFile (false),
59  operatorChars (NULL),
60  tokenList (true),
61  weOwnTokenBuffer (false)
62 {
63  in = new TokenBufferStream (_fileName);
64  _fileOpened = (in->Valid ());
65  if (_fileOpened)
66  {
67  weOwnTokenBuffer = true;
68  Initialize ();
69  }
70 }
virtual bool Valid()=0
Tokenizer::~Tokenizer ( )

Definition at line 75 of file Tokenizer.cpp.

76 {
77  if (weOwnTokenBuffer)
78  {
79  delete in;
80  in = NULL;
81  }
82  delete operatorChars;
83  operatorChars = NULL;
84 }

Member Function Documentation

void Tokenizer::DefineOperatorChars ( char *const  _operatorChars)

Definition at line 109 of file Tokenizer.cpp.

References KKB::STRDUP().

110 {
111  delete operatorChars ;
112  operatorChars = KKB::STRDUP (_operatorChars);
113 }
char * STRDUP(const char *src)
Definition: KKStr.cpp:62
bool Tokenizer::EndOfFile ( )

Definition at line 175 of file Tokenizer.cpp.

176 {
177 // if (tokenList.QueueSize () == 0)
178 // return true;
179  while ((tokenList.QueueSize () < 1) && (!atEndOfFile))
180  ReadInNextLogicalToken ();
181 
182  return (tokenList.QueueSize () < 1);
183 } /* EndOfFile */
kkint32 QueueSize() const
Definition: KKQueue.h:313
KKStrPtr Tokenizer::GetNextToken ( )

Definition at line 116 of file Tokenizer.cpp.

Referenced by GetNextTokens().

117 {
118  while (tokenList.QueueSize () < 1)
119  ReadInNextLogicalToken ();
120 
121  KKStrPtr t = tokenList.PopFromFront ();
122  return t;
123 } /* GetNextToken */
kkint32 QueueSize() const
Definition: KKQueue.h:313
virtual EntryPtr PopFromFront()
Definition: KKQueue.h:596
KKStrListPtr Tokenizer::GetNextTokens ( const KKStr delToken)

Returns a list of tokens up to and including the first occurrence of 'delToken'.

Will return a list of tokens up to and including the first occurrence if 'delToken'.

Caller will take ownership of the returned tokens, and be responsible for deleting them.

Definition at line 130 of file Tokenizer.cpp.

References KKB::KKStr::Empty(), GetNextToken(), KKB::KKStrList::KKStrList(), and KKB::KKStr::operator!=().

131 {
132  if (delToken.Empty ())
133  return NULL;
134 
135  KKStrListPtr tokens = new KKStrList (true);
136  KKStrPtr t = GetNextToken ();
137  if (t == NULL)
138  return NULL;
139 
140  while ((t != NULL) && (*t != delToken))
141  {
142  tokens->PushOnBack (t);
143  t = GetNextToken ();
144  }
145 
146  if (t)
147  tokens->PushOnBack (t);
148 
149  return tokens;
150 } /* GetNextTokens */
bool Empty() const
Definition: KKStr.h:241
KKStrPtr GetNextToken()
Definition: Tokenizer.cpp:116
virtual void PushOnBack(EntryPtr _entry)
Definition: KKQueue.h:398
KKStrConstPtr Tokenizer::operator[] ( kkuint32  idx)

Returns pointers to following Tokens in the stream where idx==0 indicates the next token.

Definition at line 419 of file Tokenizer.cpp.

References Peek().

420 {
421  return Peek (idx);
422 } /* operator[] */
KKStrConstPtr Peek(kkuint32 idx)
Definition: Tokenizer.cpp:162
KKStrConstPtr Tokenizer::Peek ( kkuint32  idx)

Definition at line 162 of file Tokenizer.cpp.

Referenced by operator[]().

163 {
164  while ((tokenList.QueueSize () < (kkint32)(idx + 1)) && !atEndOfFile)
165  ReadInNextLogicalToken ();
166 
167  if (idx >= tokenList.size ())
168  return NULL;
169 
170  return tokenList.IdxToPtr ((kkint32)idx);
171 } /* Peek */
__int32 kkint32
Definition: KKBaseTypes.h:88
EntryPtr IdxToPtr(kkuint32 idx) const
Definition: KKQueue.h:732
kkint32 QueueSize() const
Definition: KKQueue.h:313
void Tokenizer::PushTokenOnFront ( KKStrPtr  t)

Definition at line 154 of file Tokenizer.cpp.

155 {
156  tokenList.PushOnFront (t);
157 }
virtual void PushOnFront(EntryPtr _entry)
Definition: KKQueue.h:383

The documentation for this class was generated from the following files: