#ifndef TOKENTABLE_H
#define TOKENTABLE_H 1
#pragma interface


typedef enum {
  UNUSED_TOKEN, 
  /*** reserved words ***/
  EQ, LT, GT, MOD, DIV, SUB, ADD, MUL, SET, NOT, OR,
  AND, INDEX, RANGE, TONUM, TOREAL, TOSTR, TOOBJ, TIME, RANDOM, LENGTH, INSERT,
  CRYPT, IF, DOTIMES, FOREACH, WHILE, PASS, PASS_TO, SLEEP, FORK, KILL,
  ECHO_CMD, SETPARENTS, VAR, RMVAR, ADDCMD, RMCMD, MATCHCMD, CALL, METHOD,
  COMMANDS, VARS, CLONE, DISCONNECT, RECONNECT, SHUTDOWN, RETURN, BEGIN_CMD,
  TOERROR, TOLIST, IGNORE, COMPILE, SEARCH, PARENTS, EXPLODE, PURGECMDS,
  CAR, CDR, CONS, TOSYM, AFTER, BEFORE, QUOTE, EVAL, TYPEOF,
  FILETEXT, RUNSCRIPT, CLASS, SQRT, REGSPLIT, CONNOUT, HANDLE, SEMAPHORE,
  ADDRESS, GTE, LTE, FORMAT, IMPLODE, SETS, NUM2CHAR, CHAR2NUM,
  COLLECT, MATCHONE, LOG,

  /*** these are only used by the lexer and parser ***/
  L_PARENS, R_PARENS, APOSTROPHE, OBJ_COLON, RES_COLON, SYM_COLON,
  L_BRACKET, R_BRACKET} Token;

typedef struct ttstruct {
  const char* symbol;
  int   check_after;
  int   min_args;
  int   max_args;
} ttelem;

extern const struct ttstruct tokentable[];
extern char* type_strings[];

#endif /* TOKENTABLE_H */