1
/***************************************************************/
5
/* Contains a few definitions used by expression evaluator. */
7
/* This file is part of REMIND. */
8
/* Copyright (C) 1992-1998 by David F. Skoll */
9
/* Copyright (C) 1999-2000 by Roaring Penguin Software Inc. */
11
/***************************************************************/
13
/* $Id: expr.h,v 1.4 2000/02/18 03:45:53 dfs Exp $ */
15
/* Define the types of values */
22
/* Define stuff for parsing expressions */
23
#define BEG_OF_EXPR '['
24
#define END_OF_EXPR ']'
27
#define UN_OP 0 /* Unary operator */
28
#define BIN_OP 1 /* Binary Operator */
29
#define FUNC 2 /* Function */
31
/* Make the pushing and popping of values and operators in-line code
32
for speed. BEWARE: These macros invoke return if an error happens ! */
34
#define PushOpStack(op) \
35
if (OpStackPtr >= OP_STACK_SIZE) \
36
return E_OP_STK_OVER; \
38
OpStack[OpStackPtr++] = (op)
40
#define PopOpStack(op) \
41
if (OpStackPtr <= 0) \
42
return E_OP_STK_UNDER; \
44
(op) = OpStack[--OpStackPtr]
46
#define PushValStack(val) \
47
if (ValStackPtr >= VAL_STACK_SIZE) \
48
return E_VA_STK_OVER; \
50
ValStack[ValStackPtr++] = (val)
52
#define PopValStack(val) \
53
if (ValStackPtr <= 0) \
54
return E_VA_STK_UNDER; \
56
(val) = ValStack[--ValStackPtr]