rmac/expr.h

43 lines
1.3 KiB
C

//
// RMAC - Renamed Macro Assembler for all Atari computers
// EXPR.H - Expression Analyzer
// Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends
// RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
// Source utilised with the kind permission of Landon Dyer
//
#ifndef __EXPR_H__
#define __EXPR_H__
#include "rmac.h"
// Tunable definitions
#define STKSIZE 64 // Size of expression stacks
#define EVSTACKSIZE 64 // Expression evaluator stack size
// Token classes in order of precedence
#define END 0 // End/beginning of input
#define ID 1 // Symbol or constant
#define OPAR 2 // (
#define CPAR 3 // )
#define SUNARY 4 // Special unary (^^defined, etc.)
#define UNARY 5 // Unary class: ! ~ -
#define MULT 6 // Multiplicative class: * / %
#define ADD 7 // Additive class: + -
#define SHIFT 8 // Shift class: << >>
#define REL 9 // Relational class: <= >= < > <> = !=
#define AND 10 // Bitwise and: &
#define XOR 11 // Bitwise xor: ^
#define OR 12 // Bitwise or: |
// Exported functions
void InitExpression(void);
int expr1(void);
int expr2(void);
int expr(TOKEN *, uint64_t *, WORD *, SYM **);
int evexpr(TOKEN *, uint64_t *, WORD *, SYM **);
uint16_t ExpressionLength(TOKEN *);
#endif // __EXPR_H__