123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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.
|