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

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.