#ifndef __WORDPARSER_HPP__
#define __WORDPARSER_HPP__
#include "UCSChar.hpp"
#include "Token.hpp"
#include "defines.h"
#include "iter/enumerations/TypedEnumeration.hpp"
abstract class CharEnumeration : public virtual TypedEnumeration< Char >
{
public: CharEnumeration();
public: virtual ~CharEnumeration();
public: virtual Char *getNextTypedElement();
public: virtual Char *getNextCharFast() = 0;
protected: UCSChar *current;
};
interface Container;
interface Position;
interface Token;
interface Char;
class List;
class NoEntity;
class WordParser : public TokenEnumeration,
virtual public Object
{
public: WordParser( CharEnumeration *aSource );
public: void addSyntaxEntry( Container *anAlphabet, Token *aPrototype );
public: void addDefaultEntry( Token *aPrototype );
public: void removeSyntaxEntry( Container *anAlphabet ) THROWS( NoEntity * );
public: virtual ~WordParser();
public: virtual Token *getNextToken();
public: virtual Token *getNextTypedElement();
public: virtual boolean hasMoreElements();
public: virtual boolean equals( const Top *anOther ) const;
public: virtual Top *clone() const;
public: virtual String getClassName() const;
protected: Index findIndex( Char *aLetter );
#if defined( TESTING )
public: virtual boolean tester( int aParam ) const;
#endif
protected: List *prototypes;
protected: List *alphabets;
protected: Token *defToken;
protected: CharEnumeration *source;
protected: Char *readChar;
protected: Index current;
};
#endif