hoa / math

此软件包已被废弃,不再维护。未建议替代软件包。

Hoa\Math 库。

1.17.05.16 2017-05-16 08:02 UTC

README

Hoa

Build status Code coverage Packagist License

Hoa 是一套 模块化可扩展结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和学术界之间的桥梁。

Hoa\Math

Help on IRC Help on Gitter Documentation Board

此库提供了数学运算的工具。

了解更多.

安装

使用 Composer,要将此库包含到依赖项中,您需要要求 hoa/math

$ composer require hoa/math '~1.0'

有关更多安装说明,请参阅 源代码页面

测试

在运行测试套件之前,必须安装开发依赖项

$ composer install

然后,运行所有测试套件

$ vendor/bin/hoa test:run

有关更多信息,请参阅 贡献者指南

快速使用

我们提出快速了解一个功能:算术表达式的评估。

算术表达式的评估

hoa://Library/Math/Arithmetic.pp 描述了算术表达式的形式。因此,我们将使用处理语法的经典工作流程,涉及 Hoa\CompilerHoa\Math\Visitor\Arithmetic 类。

// 1. Load the compiler.
$compiler = Hoa\Compiler\Llk::load(
    new Hoa\File\Read('hoa://Library/Math/Arithmetic.pp')
);

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

// 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)
);

/**
 * Will output:
 *     float(6.4498519738463)
 */

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

/**
 * Will output:
 *     >  #addition
 *     >  >  #division
 *     >  >  >  token(number, 1)
 *     >  >  >  #division
 *     >  >  >  >  token(number, 2)
 *     >  >  >  >  token(number, 3)
 *     >  >  #multiplication
 *     >  >  >  token(number, 4)
 *     >  >  >  #multiplication
 *     >  >  >  >  #group
 *     >  >  >  >  >  #substraction
 *     >  >  >  >  >  >  #multiplication
 *     >  >  >  >  >  >  >  token(number, 5)
 *     >  >  >  >  >  >  >  token(number, 2)
 *     >  >  >  >  >  >  token(number, 6)
 *     >  >  >  >  #division
 *     >  >  >  >  >  token(constant, PI)
 *     >  >  >  >  >  #function
 *     >  >  >  >  >  >  token(id, avg)
 *     >  >  >  >  >  >  token(number, 7)
 *     >  >  >  >  >  >  token(number, 8)
 *     >  >  >  >  >  >  token(number, 9)
 */

我们可以通过 addFunctionaddConstant 方法在访问器中添加函数和常量。因此,我们将添加具有 2 个参数的 rand 函数和设置为 42 的 ANSWER 常量

$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))
);

/**
 * Could output:
 *     int(53)
 */

文档

Hoa\Math 的黑客手册包含有关如何使用此库及其工作方式的详细信息。

要本地生成文档,请执行以下命令

$ composer require --dev hoa/devtools
$ vendor/bin/hoa devtools:documentation --open

更多文档可以在项目的网站上找到: hoa-project.net

获取帮助

主要有两种方式可以获得帮助

贡献

您想贡献吗?谢谢!详细的 贡献者指南 解释了您需要知道的一切。

许可证

Hoa遵循新的BSD许可证(BSD-3-Clause)。请参阅LICENSE获取详细信息。

相关项目

以下项目使用了这个库

  • PSIH & PMSIpilot,PSIH是法国医疗保健行业商业智能解决方案的领先集成商,
  • PHP Telegram Bot,基于官方Telegram Bot API的Telegram机器人。