40 #ifndef __EST_TOKEN_H__ 
   41 #define __EST_TOKEN_H__ 
   47 #include "EST_String.h" 
   48 #include "EST_common.h" 
   52 extern const EST_String EST_Token_Default_WhiteSpaceChars;
 
   54 extern const EST_String EST_Token_Default_SingleCharSymbols;
 
   56 extern const EST_String EST_Token_Default_PunctuationSymbols;
 
   58 extern const EST_String EST_Token_Default_PrePunctuationSymbols;
 
   90     void init() {p_quoted=linenum=linepos=p_filepos=0;}
 
   97     void set_token(
const char *p) { pname = p; }
 
  101     void set_whitespace(
const char *p) { space = p; }
 
  105     void set_punctuation(
const char *p) { punc = p; }
 
  109     void set_prepunctuation(
const char *p) { prepunc = p; }
 
  111     const EST_String &whitespace() { 
return space; }
 
  113     const EST_String &punctuation() { 
return punc; }
 
  115     const EST_String &prepunctuation() { 
return prepunc; }
 
  119     const EST_String &string()
 const { 
return String(); }
 
  130     int Int(
bool &valid)
 const { 
return String().Int(valid); }
 
  131     int Int()
 const { 
return String().Int(); }
 
  132     int I(
bool &valid)
 const { 
return Int(valid); }
 
  133     int I()
 const { 
return Int(); }
 
  134     operator int()
 const { 
return Int(); }
 
  139     long Long(
bool &valid)
 const { 
return String().Long(valid); }
 
  140     long Long()
 const { 
return String().Long(); }
 
  141     long L(
bool &valid)
 const { 
return Long(valid); }
 
  142     long L()
 const { 
return Long(); }
 
  143     operator long()
 const { 
return Long(); }
 
  148     float Float(
bool &valid)
 const { 
return String().Float(valid); }
 
  149     float Float()
 const { 
return String().Float(); }
 
  150     float F(
bool &valid)
 const { 
return Float(valid); }
 
  151     float F()
 const { 
return Float(); }
 
  152     operator float()
 const { 
return Float(); }
 
  157     double Double(
bool &valid)
 const { 
return String().Double(valid); }
 
  158     double Double()
 const { 
return String().Double(); }
 
  159     double D(
bool &valid)
 const { 
return Double(valid); }
 
  160     double D()
 const { 
return Double(); }
 
  161     operator double()
 const { 
return Double(); }
 
  172     void set_row(
int r) { linenum = r; }
 
  174     void set_col(
int c) { linepos = c; }
 
  182     int row(
void)
 const { 
return linenum; }
 
  184     int col(
void)
 const { 
return linepos; }
 
  192     friend ostream& operator << (ostream& s, 
const EST_Token &p);
 
  199     int operator == (
const EST_String &a) { 
return (pname == a); }
 
  201     int operator != (
const EST_String &a) { 
return (pname != a); }
 
  203     int operator == (
const char *a) { 
return (strcmp(pname,a)==0); }
 
  205     int operator != (
const char *a) { 
return (strcmp(pname,a)!=0); }
 
  208 enum EST_tokenstream_type {tst_none, tst_file, tst_pipe, tst_string, tst_istream}; 
 
  237     EST_tokenstream_type type;
 
  262     void default_values(
void);
 
  289     inline int getch_internal();
 
  290     inline int peekch_internal();
 
  291     inline int getpeeked_internal();
 
  301     int open(FILE *ofp, 
int close_when_finished);
 
  303     int open(istream &newis);
 
  319     { 
return must_get(expected, &ok); }
 
  321     { 
return must_get(expected, (
bool *)NULL); }
 
  329     {   
if (!peeked_tokp) 
get();
 
  330     peeked_tokp = TRUE; 
return current_tok; }
 
  332     int fread(
void *buff,
int size,
int nitems);
 
  338         { WhiteSpaceChars = ws; p_table_wrong=1;}
 
  341         { SingleCharSymbols = sc; p_table_wrong=1;}
 
  344         { PunctuationSymbols = ps; p_table_wrong=1;}
 
  347         { PrePunctuationSymbols = ps; p_table_wrong=1;}
 
  349     void set_quotes(
char q, 
char e) { quotes = TRUE; quote = q; escape = e; p_table_wrong=1;}
 
  359        { 
return (eof_flag || ((!quotes) && (peek() == 
""))); }
 
  363     int filepos(
void)
 const { 
return (type == tst_string) ? pos : p_filepos; }
 
  365     int tell(
void)
 const { 
return filepos(); }
 
  367     int seek(
int position);
 
  393 #endif // __EST_TOKEN_H__