sergej-kurakin/php-shunting-yard

重构后的重新打包:https://github.com/droptable/php-shunting-yard

dev-master 2014-01-05 12:43 UTC

This package is not auto-updated.

Last update: 2024-09-24 01:22:57 UTC


README

PHP Shunting Yard 实现

主分支: Master Build Status 开发分支: Dev Build Status

示例

简单方程解析

use RR\Shunt\Parser;

$equation = '3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3';
$result = Parser::parse($equation);
echo $result; //3.0001220703125

包含常量和函数的方程

use RR\Shunt\Parser;
use RR\Shunt\Context;

$ctx = new Context();
$ctx->def('abs'); // wrapper for PHP "abs" function
$ctx->def('foo', 5); // constant "foo" with value "5"
$ctx->def('bar', function($a, $b) { return $a * $b; }); // define function

$equation = '3 + bar(4, 2) / (abs(-1) - foo) ^ 2 ^ 3';
$result = Parser::parse($equation, $ctx);
echo $result; //3.0001220703125

作者

原始源代码来自 https://github.com/droptable/php-shunting-yard,一些修改来自 https://github.com/andig/php-shunting-yard。这只是为了 composer/packagist 的重构和重新打包。

通过 Composer 安装

在您的 composer.json 文件中定义以下需求

{
    "require": {
        "sergej-kurakin/php-shunting-yard": "dev-master"
    }
}

类加载

require_once "vendor/autoload.php";

MIT 许可证

特此授予任何获得本软件及其相关文档文件(“软件”)副本的人免费处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供的人进行此类处理,但受以下条件约束

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定目的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论此类责任是基于合同、侵权或其他方式,以及与软件或软件的使用或其他操作相关。