The following is a list of the features currently supported by the parser library.
The primary objective is to keep it as extensible as possible whilst ensuring a maximum parsing speed. Extending the parser is mostly based on allowing a user to add custom callbacks which require only an absolute minimum of code. For instance you need exactly 2 lines of code to add a new function.
But extending the parser may not be necessary at all since it comes with a powerful default
implementation. Here is the (incomplete) list of features:
- Easy to use
- Extremely fast
- User-defined operators
- binary operators
- postfix operators
- infix operators
- User-defined functions
- with a fixed number of up to five arguments
- with variable number of arguments
- with a single string argument (for database queries)
- User-defined constants.
- numeric constants
- string constants
- User-defined variables.
- unlimited in number
- definable at parser runtime by the parser
- assigning variables in terms of other variables is possible
- Custom value recognition callbacks
- support for binary and hex values.
- can be used to implement database queries
- Default implementaion with many features
- Portability
- GNU Makefile included
- BCB Project files included
- MSVC 7.1 Project files for managed and unmanaged code
- ISO 14882 compliant code
- DLL version usable from every language able to use function exported in C-style
- Unit support
- Use postfix operators as unit multipliers
(3m -> 0.003)
This section gives an overview on the default features supported by the parser. The default
implementation is defined in the class mu::Parser located in the file
muParser.cpp. The DLL-version uses this class internally.
The following table gives an overview of the functions supported by the
default implementation. It lists the function names, the number of
arguments and a brief description.
Name | Argc. | Explanation |
sin | 1 | sine function |
cos | 1 | cosine function |
tan | 1 | tangens function |
asin | 1 | arcus sine function |
acos | 1 | arcus cosine function |
atan | 1 | arcus tangens function |
sinh | 1 | hyperbolic sine function |
cosh | 1 | hyperbolic cosine |
tanh | 1 | hyperbolic tangens function |
asinh | 1 | hyperbolic arcus sine function |
acosh | 1 | hyperbolic arcus tangens function |
atanh | 1 | hyperbolic arcur tangens function |
log2 | 1 | logarithm to the base 2 |
log10 | 1 | logarithm to the base 10 |
log | 1 | logarithm to the base 10 |
ln | 1 | logarithm to base e (2.71828...) |
exp | 1 | e raised to the power of x |
sqrt | 1 | square root of a value |
sign | 1 | sign function -1 if x<0; 1 if x>0 |
rint | 1 | round to nearest integer |
abs | 1 | absolute value |
if | 3 | if ... then ... else ... |
min | var. | min of all arguments |
max | var. | max of all arguments |
sum | var. | sum of all arguments |
avg | var. | mean value of all arguments |
The following table lists the default binary operators supported by the parser.
Operator | Meaning | Priority |
= | assignement* | -1 |
and | logical and | 1 |
or | logical or | 1 |
xor | logical xor | 1 |
<= | less or equal | 2 |
>= | greater or equal | 2 |
!= | not equal | 2 |
== | equal | 2 |
> | greater than | 2 |
< | less than | 2 |
+ | addition | 3 |
- | subtraction | 3 |
* | multiplication | 4 |
/ | division | 4 |
^ | raise x to the power of y | 5 |
*The assignment operator is special since it changes one of its
arguments and can only by applied to variables.
© 2005-2006 Ingo Berg |
^ TOP
|
|