/* bobcom.h - bob compiler definitions */
/*
        Copyright (c) 1991, by David Michael Betz
        All rights reserved.

        Alterations and additions, 1994, by G.C.Wraith
*/

/* limits */
#define CMAX            32767   /* code buffer size */

/* token definitions */
#define T_NOTOKEN       -1
#define T_EOF           0

/* non-character tokens */
#define _TMIN           256
#define T_STRING        256
#define T_IDENTIFIER    257
#define T_NUMBER        258
#define T_CLASS         259
#define T_STATIC        260
#define T_IF            261
#define T_ELSE          262
#define T_WHILE         263
#define T_RETURN        264
#define T_FOR           265
#define T_BREAK         266
#define T_CONTINUE      267
#define T_DO            268
#define T_NEW           269
#define T_NIL           270
#define T_LOCAL         271     /* RISC OS */
#define T_SWITCH        272     /* RISC OS */
#define T_CASE          273     /* RISC OS */
#define T_DEFAULT       274     /* RISC OS */
#define T_UNTIL         275     /* RISC OS */
#define T_IN            276     /* RISC OS */
#define T_PUT           277     /* RISC OS */
#define T_VECTOR        278     /* RISC OS */
#define T_ENUM          279     /* RISC OS */
#define T_LE            280     /* '<=' */
#define T_EQ            281     /* '==' */
#define T_NE            282     /* '!=' */
#define T_GE            283     /* '>=' */
#define T_SHL           284     /* '<<' */
#define T_SHR           285     /* '>>' */
#define T_AND           286     /* '&&' */
#define T_OR            287     /* '||' */
#define T_INC           288     /* '++' */
#define T_DEC           289     /* '--' */
#define T_ADDEQ         290     /* '+=' */
#define T_SUBEQ         291     /* '-=' */
#define T_MULEQ         292     /* '*=' */
#define T_DIVEQ         293     /* '/=' */
#define T_REMEQ         294     /* '%=' */
#define T_ANDEQ         295     /* '&=' */
#define T_OREQ          296     /* '|=' */
#define T_XOREQ         297     /* '^=' */
#define T_SHLEQ         298     /* '<<=' */
#define T_SHREQ         299     /* '>>=' */
#define T_CC            300     /* '::' */
#define T_MEMREF        301     /* '->' */
#define T_REAL          302
#define _TMAX           302

/* function argument structure */
typedef struct argument {
    char *arg_name;             /* argument name */
    struct argument *arg_next;  /* next argument */
} ARGUMENT;

/* literal structure */
typedef struct literal {
    VALUE lit_value;            /* literal value */
    struct literal *lit_next;   /* next literal */
} LITERAL;
