Skip to content

n3wsw3/Expresly

Repository files navigation

Expresly

A parser and evaluater for expressions using this variation of the Shunting yard algorithm.

Getting Started

If you're not going to run any tests then you can clone the project with git clone https://github.com/n3wsw3/Expresly.

Running Tests

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.

Examples

Simple with only standard operators and functions

#include "expresly.h"
#include <iostream>

int main() {
  std::cout << expresly::expression::eval("(2 + 2)") << std::endl;
  return 0;
}

Will output 4

With added functions

#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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published