int f_mult(int a1, int a2);
int f_div(int a1, int a2);
int f_add(int a1, int a2);
int f_sub(int a1, int a2);
int f_or(int a1, int a2);
int f_and(int a1, int a2);
int f_xor(int a1, int a2);
int f_shl(int a1, int a2);
int f_shr(int a1, int a2);

int parse_string(char*);
int eval_string(char*);
int parse_expr(char*,int,int*);
int eval_level(num_expr*, int);
int search_labels(char*);
char* next_char(char*);
int insert_label(label_struct*);
int resolve_macro(FILE*, char*, int*, BOOL);
BOOL show_parse_errors(void);
int search_defines(char* str);
int insert_define(char* name, char* define);

extern int current_parse_error;
extern define_struct define_array[MAX_DEFINES];
extern label_struct label_array[MAX_LABELS];
extern int total_defines, total_labels;
