//
// NAME
// eval.h
//
// DESCRIPTION
// This file contains the type definitions and function prototypes
// exported by the Evaluation module.
//
#ifndef _eval_h_
#define _eval_h_
//
// NAME
// operation
//
// DESCRIPTION
// This data type models an operation.
//
enum operation { Constant,
Addition,
Subtraction,
Multiplication,
Division
};
//
// NAME
// expr
//
// DESCRIPTION
// This data type models an expression.
//
// MEMBERS
// oper - operation of the expression.
// number - value if the expression is a constant.
// op1 - pointer to the first operand. If the expression
// is a constant, then op1 is set to NULL.
// op2 - pointer to the second operand. If the expression
// is a constant, then op2 is set to NULL.
//
struct expr {
operation oper;
double number;
expr * op1;
expr * op2;
};
//
// NAME
// evaluate
//
// DESCRIPTION
// This function evaluates an expression.
//
// PARAMETERS
// e (in) - expression to evaluate.
//
// RETURNS
// value of the expression.
//
double evaluate(const expr * e);
//
// NAME
// freeExpr
//
// DESCRIPTION
// This function frees the memory allocated to an expression.
//
// PARAMETERS
// e (in) - expression to free.
//
// RETURNS
// (none)
//
void freeExpr(expr * e);
//
// NAME
// display
//
// DESCRIPTION
// This function displays an expression.
//
// PARAMETERS
// e (in) - expression to display.
//
// RETURNS
// (none)
//
void display(const expr * e);
#endif