Expression evaluation library v1.0 - by lone
--------------------------------------------
How to use
~~~~~~~~~~
¦ resetVars
-----------
void resetVars(void);
Resets the variables table. It is necessary to call it prior to evaluate your first
expression or variables contents may be random instead of zero
¦ evaluate
----------
double evaluate(char *expression, int *col);
Evaluates an expression and returns the result.
If a syntax error was encountered during the parsing of the expression, then col will
be non-null and col-1 will be the index of the char which triggered the error.
Limitations
~~~~~~~~~~~
¦ you can set only up to 1024 variables.
¦ only decimal and hexadecimal bases available
¦ operators are limited to :
+ - / * % & |
¦ functions are limited to :
sin, cos, tan,
asin, acos, atan,
atan2, sqr, sqrt,
pow, exp, log, log10
Some examples
~~~~~~~~~~~~~
- assignments :
pi=3.1415927
a=atan2(cos(pi/4),2)
- direct evaluations :
cos(pi/4)
sin(45)
- base notations :
3bh (this is 0x3B)
17d (this is 17)
17dh (this is 0x17D)
Adding new functions
~~~~~~~~~~~~~~~~~~~~
The file EVAL.C contains the functions table (fnTable). Just add an entry with the name,
the number of parameters, and a pointer to the function body. Implement the body and
you're done. If your function ahs more than 2 parameters, you'll need to extend the grammar
description file (CAL.Y) to add the FUNCTION3 (and eventually subsequent) token(s) and
parsing informations.
SCAN.L & CAL.Y
~~~~~~~~~~~~~~
SCAN.L contains description for the lexical analyzer generator (LEX). Use makel.bat to rebuild
LEXTAB.C
CAL.Y contains the LALR formal grammar description for the parser generator (BISON). Use makey.bat
to rebuild CAL_TAB.C
Compiling
~~~~~~~~~
Just include all source files to your project, and include EVAL.H into your main source code.