Hoa central

Hoa is a modular, extensible and structured set of PHP libraries. Moreover, Hoa aims at being a bridge between industrial and research worlds.


This library provides tools around mathemetical operations.


With Composer, to include this library into your dependencies, you need to require `hoa/math`:

```json { "require": { "hoa/math": "~0.0" } } ```

Please, read the website to get more informations about how to install.

Quick usage

We propose a quick overview of one feature: evaluation of arithmetical expressions.

Evaluation of arithmetical expressions

The hoa://Library/Math/Arithmetic.pp describes the form of an arithmetical expression. Therefore, we will use the classical workflow when manipulating a grammar, that involves the `Hoa` library and the Hoa\Math\Visitor\Arithmetic class.

```php // 1. Load the compiler. $compiler = Hoa::load( new Hoa('hoa://Library/Math/Arithmetic.pp') );

// 2. Load the visitor, aka the “evaluator”. $visitor = new Hoa();

// 3. Declare the expression. $expression = '1 / 2 / 3 + 4 * (5 * 2 - 6) * PI / avg(7, 8, 9)';

// 4. Parse the expression. $ast = $compiler->parse($expression);

// 5. Evaluate. var_dump( $visitor->visit($ast) );


// Bonus. Print the AST of the expression. $dump = new Hoa(); echo $dump->visit($ast);


We can add functions and constants on the visitor, thanks to the addFunction and addConstant methods. Thus, we will add the rand function (with 2 parameters) and the ANSWER constant, set to 42:

```php $visitor->addFunction('rand', function ($min, $max) { return mt_rand($min, $max); }); $visitor->addConstant('ANSWER', 42);

$expression = 'rand(ANSWER / 2, ANSWER * 2)' var_dump( $visitor->visit($compiler->parse($expression)) );



Different documentations can be found on the website: http://hoa-project.net/.


Hoa is under the New BSD License (BSD-3-Clause). Please, see `LICENSE`.