//  File: tokenizer.h
//
//  Tokenizer class for parsing arithmetic expressions

#ifndef _tokenizer_h
#define _tokenizer_h

#include "token.h"

class Tokenizer {
public:
   Tokenizer() ;	    	// default constructor (not useful)
   Tokenizer(char *);	    // alternate constructor (use this one)
   ~Tokenizer() ;			// destructor

   token_t LookAhead() ;    // get lookahead token
   void EatToken() ;	    // consume next token
   void PrintError() ;		// generate error diagram

private:
   char *str ;				// input string
   int pos ;            	// current position 
   int last ;           	// last position 
   int looked ;         	// = 1, if looked ahead. = 0, otherwise 
   int lookahead_pos ;  	// stopped scanning here, after looking 
   token_t lookahead ; 		// lookahead token cached

   void SkipSpaces(int) ;	// skip over white space
} ;

#endif
