Manual Reference Pages - EVAL (3)
eval - evaluate simple arithmetic expressions
struct eval *eval_new(symlook_fn symlook,void*context);
void eval_del(void *eval);
int eval_expression(struct eval *eval, const tchar *expr, const tchar *elim, unsigned long *result);
module will evaluate simple arithmentic expressions consisting of integers, symbols for which the provided
symlook_fn returns an integer, and any of the operators
Operator precedence is roughly the same as the C language.
( ) higher
^ & | lower
Prefixing integer tokens with minus
- to indicate a negative value is currently not supported.
eval_new function creates and returns a new context object for evaluating expressions. The
symlook parameter is defined as follows:
typedef int (*symlook_fn)(const tchar *name, unsigned long *val, void *context);
symlook_fn function will be called to resolve any non-numeric symbols and should place the value identified by
val and return 0. If the symbol is not found -1 should be returned.
eval_new function can be used repeatedly to evaluate any number of expressions before being destroyed with the
eval_del function. The
context parameter is passed uninterpreted to the
symlook_fn (e.g. a map perhaps).
eval_del function deletes the context object
eval freeing any memory allocated with
eval_new or during the evaluation of expressions.
eval_expression function evaluates an infix expression like
(5 + 3) * N, converts it into a stack of tokens in postfix orientation, and reduces it with a simple translation matrix to produce a single integer value. The
eval parameter is a context object created with
eval_new. The expression at
expr is evaluated up to, but not including, the memory at
elim, and writes the resulting value in the memory at
eval_expression function returns 0 if the expression was successfully reduced or -1 if an error occured in which case
errno will be set appropriately (e.g.
ENOENT if the
symlook_fn could not resolve a symbol).
|libmba-0.9.1 ||EVAL (3m) ||Apr 29, 2005 |
Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.