Archived
1
0
This repository has been archived on 2024-10-17. You can view files and clone it, but cannot push or open issues or pull requests.
winamp/Src/Plugins/Visualization/vis_avs/evallib
..
bison
BISON.EXE
CAL_TAB.C
cal_tab.h
cal.y
cfunc.c
Compiler.c
Compiler.h
eval.c
eval.h
GETTOK.C
LEX.EXE
LEX.H
LEXGET.C
LEXSWI.C
LEXTAB.C
LLSAVE.C
LMOVB.C
makel.bat
makey.bat
new_eval_stuff.zip
readme.txt
Scan.l
YYLEX.C

  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.