Jef 20d28e80a5 Initial community commit пре 10 месеци
..
bison 20d28e80a5 Initial community commit пре 10 месеци
BISON.EXE 20d28e80a5 Initial community commit пре 10 месеци
CAL_TAB.C 20d28e80a5 Initial community commit пре 10 месеци
Compiler.c 20d28e80a5 Initial community commit пре 10 месеци
Compiler.h 20d28e80a5 Initial community commit пре 10 месеци
GETTOK.C 20d28e80a5 Initial community commit пре 10 месеци
LEX.EXE 20d28e80a5 Initial community commit пре 10 месеци
LEX.H 20d28e80a5 Initial community commit пре 10 месеци
LEXGET.C 20d28e80a5 Initial community commit пре 10 месеци
LEXSWI.C 20d28e80a5 Initial community commit пре 10 месеци
LEXTAB.C 20d28e80a5 Initial community commit пре 10 месеци
LLSAVE.C 20d28e80a5 Initial community commit пре 10 месеци
LMOVB.C 20d28e80a5 Initial community commit пре 10 месеци
Scan.l 20d28e80a5 Initial community commit пре 10 месеци
YYLEX.C 20d28e80a5 Initial community commit пре 10 месеци
cal.y 20d28e80a5 Initial community commit пре 10 месеци
cal_tab.h 20d28e80a5 Initial community commit пре 10 месеци
cfunc.c 20d28e80a5 Initial community commit пре 10 месеци
eval.c 20d28e80a5 Initial community commit пре 10 месеци
eval.h 20d28e80a5 Initial community commit пре 10 месеци
makel.bat 20d28e80a5 Initial community commit пре 10 месеци
makey.bat 20d28e80a5 Initial community commit пре 10 месеци
new_eval_stuff.zip 20d28e80a5 Initial community commit пре 10 месеци
readme.txt 20d28e80a5 Initial community commit пре 10 месеци

readme.txt


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.