/* Surface
 * (C) Copyright 1995 by Ashton Mason (amason@cs.uct.ac.za)
 *
 * Permission to use, modify, copy and distribute this source code for
 * any purpose and without fee is granted, provided that this copyright
 * notice appears in all copies and supporting documentation, and that
 * credit is given where due. This source code is provided "as is" with
 * no express or implied warranty.
 */


#define SYMBOLS 53    			// number of symbols


#define NA -1				// dummy value


enum symbol
{
  NOP,
  LEFT_P, RIGHT_P,
  ADD, SUB, MULT, DIV,
  CONST,
  SIN, COS,
  INTER, NORMAL,
  GRADIENT,
  IF, AND, OR, NOT,
  EXTRACT, CREATE,
  EQUAL, NOT_EQUAL,
  L_THAN, G_THAN, LT_EQUAL, GT_EQUAL,
  REM,
  SQUARE, SQRT,
  LENGTH,
  MAX, MIN,
  LOG,
  POW,
  DOT, CROSS,
  UNIT,
  TEXTURE, PALETTE,
  RANDOM,
  FLOOR, CEIL, ABS,
  XCOORD, YCOORD, ZCOORD,
  NAME,
  TAN, ASIN, ACOS, ATAN,
  NOISE,
  DNOISE,
  PIE
};

enum symboltype {OPERATOR, OPERAND};


extern char keywords[SYMBOLS][10];
extern symboltype symbol_type[SYMBOLS];
extern int operand_count[SYMBOLS];
extern int symbol_priority[SYMBOLS];

