Jef 20d28e80a5 Initial community commit 2 mesi fa
..
bison 20d28e80a5 Initial community commit 2 mesi fa
BISON.EXE 20d28e80a5 Initial community commit 2 mesi fa
CAL_TAB.C 20d28e80a5 Initial community commit 2 mesi fa
Compiler.c 20d28e80a5 Initial community commit 2 mesi fa
Compiler.h 20d28e80a5 Initial community commit 2 mesi fa
GETTOK.C 20d28e80a5 Initial community commit 2 mesi fa
LEX.EXE 20d28e80a5 Initial community commit 2 mesi fa
LEX.H 20d28e80a5 Initial community commit 2 mesi fa
LEXGET.C 20d28e80a5 Initial community commit 2 mesi fa
LEXSWI.C 20d28e80a5 Initial community commit 2 mesi fa
LEXTAB.C 20d28e80a5 Initial community commit 2 mesi fa
LLSAVE.C 20d28e80a5 Initial community commit 2 mesi fa
LMOVB.C 20d28e80a5 Initial community commit 2 mesi fa
Scan.l 20d28e80a5 Initial community commit 2 mesi fa
YYLEX.C 20d28e80a5 Initial community commit 2 mesi fa
cal.y 20d28e80a5 Initial community commit 2 mesi fa
cal_tab.h 20d28e80a5 Initial community commit 2 mesi fa
cfunc.c 20d28e80a5 Initial community commit 2 mesi fa
eval.c 20d28e80a5 Initial community commit 2 mesi fa
eval.h 20d28e80a5 Initial community commit 2 mesi fa
makel.bat 20d28e80a5 Initial community commit 2 mesi fa
makey.bat 20d28e80a5 Initial community commit 2 mesi fa
new_eval_stuff.zip 20d28e80a5 Initial community commit 2 mesi fa
readme.txt 20d28e80a5 Initial community commit 2 mesi fa

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.