A parser and evaluater for expressions using this variation of the Shunting yard algorithm.
If you're not going to run any tests then you can clone the project with git clone https://github.com/n3wsw3/Expresly
.
Since the tests depend on gtest you have to recursivly clone the submodules.
Start by cloning the repository with git clone --recursive https://github.com/n3wsw3/Expresly
.
If the repository was cloned non-recursively previously, use git submodule update --init --recursive
to clone the necessary submodules.
#include "expresly.h"
#include <iostream>
int main() {
std::cout << expresly::expression::eval("(2 + 2)") << std::endl;
return 0;
}
Will output 4
#include "expresly.h"
#include <iostream>
#include <cmath>
int main() {
expresly::Options op = expresly::Options();
op.addFunction("mod", [](std::vector<double> v) {
return std::fmod(v[1], v[0]);
});
std::cout << expresly::expression::eval("mod ( 2 + 3 , 2 )", op); << std::endl;
return 0;
}
Will output 1