mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-12-24 06:44:49 +01:00
85 lines
2.3 KiB
Plaintext
85 lines
2.3 KiB
Plaintext
|
|
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.
|