Files
winamp/Src/Plugins/Visualization/vis_avs/evallib
2024-09-24 14:54:57 +02:00
..
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00
2024-09-24 14:54:57 +02:00



  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.