/*
 * token.h
 *
 * Copyright 1995-2004 Timo Rossi, <trossi@iki.fi>
 * See the file LICENSE for license terms.
 *
 */

#define TOKSIZE 256

/*
 * token codes
 */
/**/
enum {
  TOK_INVALID,
  TOK_EOF,
  TOK_NEWLINE,
  TOK_COLON,
  TOK_PERIOD,
  TOK_DOLLAR,
  TOK_COMMA,
  TOK_LEFTPAR,
  TOK_RIGHTPAR,
  TOK_LEFTBRAK,
  TOK_RIGHTBRAK,
  TOK_EQUAL,
  TOK_EQ,
  TOK_NOT_EQ,
  TOK_LESS,
  TOK_LESS_EQ,
  TOK_GREATER,
  TOK_GT_EQ,
  TOK_PLUS,
  TOK_MINUS,
  TOK_ASTERISK,
  TOK_SLASH,
  TOK_PERCENT,
  TOK_BITAND,
  TOK_BITOR,
  TOK_BITXOR,
  TOK_BITNOT,
  TOK_LSHIFT,
  TOK_RSHIFT,
  TOK_BACKSLASH,
  TOK_IDENTIFIER,
  TOK_LOCAL_ID,
  TOK_INTCONST,
  TOK_STRCONST, /* used as file name with include, and in EDATA */

  KW_INCLUDE,
  KW_MACRO,
  KW_ENDM,
  KW_EXITM,
  KW_IF,
  KW_ELSE,
  KW_ENDIF,
  KW_EQU,
  KW_SET,
  KW_END,
  KW_ORG,
  KW_DS,
  KW_EDATA,
  KW_DT,
  KW_DATA,
  KW_CBLOCK,
  KW_ENDC,
  KW_CONFIG,
  KW_PICID,
  KW_DEVICE,
  KW_DEFINED,
  KW_HIBYTE,
  KW_STREQ,
  KW_STREQCASE,
  KW_ISSTR,
  KW_CHRVAL,
  KW_OPT,
  KW_LOCAL,
  KW_ENDLOCAL,
  KW_ERROR,

  KW_ADDLW,
  KW_ADDWF,
  KW_ANDLW,
  KW_ANDWF,
  KW_BCF,
  KW_BSF,
  KW_BTFSC,
  KW_BTFSS,
  KW_CALL,
  KW_CLRF,
  KW_CLRW,
  KW_CLRWDT,
  KW_COMF,
  KW_DECF,
  KW_DECFSZ,
  KW_GOTO,
  KW_INCF,
  KW_INCFSZ,
  KW_IORLW,
  KW_IORWF,
  KW_MOVLW,
  KW_MOVF,
  KW_MOVWF,
  KW_NOP,
  KW_OPTION,
  KW_RETFIE,
  KW_RETLW,
  KW_RETURN,
  KW_RLF,
  KW_RRF,
  KW_SLEEP,  
  KW_SUBLW,
  KW_SUBWF,
  KW_SWAPF,
  KW_TRIS,
  KW_XORLW,
  KW_XORWF,

  KW_ADDWFC,
  KW_BTG,
  KW_CPFSEQ,
  KW_CPFSGT,
  KW_CPFSLT,
  KW_DAW,
  KW_DCFSNZ,
  KW_INFSNZ,
  KW_LCALL,
  KW_MOVFP,
  KW_MOVPF,
  KW_MOVLB,
  KW_MOVLR,
  KW_MULLW,
  KW_MULWF,
  KW_NEGW,
  KW_RLCF,
  KW_RLNCF,
  KW_RRCF,
  KW_RRNCF,
  KW_SETF,
  KW_SUBWFB,
  KW_TABLRD,
  KW_TABLWT,
  KW_TLRD,
  KW_TLWT,
  KW_TSTFSZ,

  KW_SET_PIC_TYPE,

  KW_END_POS /* end marker */
};

#define FIRST_KW KW_INCLUDE
#define NUM_KEYWORDS (KW_END_POS-FIRST_KW)

extern int token_type, line_buf_off;
extern char token_string[TOKSIZE];
extern long token_int_val;
extern int tok_char;
extern int ifskip_mode;

/*prototypes*/

void get_token(void), skip_eol(void);
void expand_macro(struct symbol *sym);
void expand_macro_with_args(struct symbol *, char **, int, int);
void begin_include(char *fname, int, int), end_include(void);
void read_src_char(void);
void init_includes(void), add_include_path(char *);


syntax highlighted by Code2HTML, v. 0.9.1