This project is an expression evaluator developed in C language. This uses the shunting-yard algorithm to evaluate the expression respecting the precedence of the operators.
The functions cev()
and cev_script()
(inside cev.c file) is the main of the evaluator that be used to evaluate an string or a file. The expressions support definition of variables and use int64_t signed integers to numbers. All the following C operators can be used:
+ |
- |
* |
/ |
% |
! |
&& |
|| |
> |
< |
^ |
~ |
& |
| |
>> |
<< |
== |
!= |
>= |
<= |
= |
+= |
-= |
/= |
%= |
*= |
** |
The
**
is the same as in the JavaScript, calculating the power of the operands.
Simplest example usage:
int64_t result = cev(NULL, "234 + 0xffffffffff / (0732 ** 3)");
To use in your project, import cev.h
and tree.h
to your include's directory. Use the command below to compile a static library:
$ make lib
The file libcev.a
will be created. Just include cev.h
, link this static library and done!
int64_t cev(cev_t *ctx, char *input)
Evaluates input
string like an expression. The ctx
struct is an context that have the declared variables. If passed NULL
like argument, this don't use a pre-defined context.
This function returns the result of the expression as int64_t
integer.
int64_t cev_script(cev_t *ctx, char *filename)
Evaluates all lines of the file like expressions. The ctx
is the same as cev()
function.
Returns the latest expression result as int64_t
integer.
This project have an bc-like command-line calculator that can run scripts or evaluate expressions direct from input.
To install it, just run:
$ make
$ sudo make install
To see help about usage, run cev -h
in your terminal.