\#pragma once

\#include <iostream>
\#include "JavaCC.h"
\#include "Token.h"

#if NAMESPACE
namespace ${NAMESPACE_OPEN}
#fi
/**
 * An implementation for this interface is generated by
 * JavaCCParser.  The user is free to use any implementation
 * of their choice.
 */

class TokenManager {
public:
  /** This gets the next token from the input stream.
   *  A token of kind 0 (<EOF>) should be returned on EOF.
   */
  virtual       ~TokenManager() { }
  virtual Token *getNextToken() = 0;
  virtual void   setParser(void* parser) {};
  virtual void   lexicalError() {
  	std::cerr << "Lexical error encountered." << std::endl;
  }

};

#if NAMESPACE
${NAMESPACE_CLOSE}
#fi

