4 个版本

使用旧的 Rust 2015

0.1.3 2016年8月25日
0.1.2 2016年6月17日
0.1.1 2016年4月22日
0.1.0 2016年4月21日

#929 in 数学

MIT 许可证

38KB
874

Pupil

用 Rust 编写的算术表达式求值器。

它实现了一种经过修改的 Shunting-yard 算法

Pupil

要构建 pupil 可执行文件,运行 cargo build。如果需要优化构建,请附加 --release 开关。

它有三个不同的用途

  • 交互模式。

    输入表达式并按回车键求值。

    PATH/TO/CRATE/ROOT> cargo run
    Welcome to pupil, the arithmetic expression evaluator.
    
    Enter an expression, eg. 2 + 3, and press enter.
    Press ctrl-C to exit.
    
    >>> 2 + 3
    5
    >>> ^C
    
  • 提供要评估的表达式作为命令行参数。

    这允许评估单个表达式然后退出。

    PATH/TO/CRATE/ROOT> cargo run -- 2 + 3
    Welcome to pupil, the arithmetic expression evaluator.
    Ok: 5
    
  • 管道输入。

    将每一行评估为单独的表达式,并逐行打印结果。

    PATH/TO/CRATE/ROOT> echo 2 + 3 | cargo run
    5
    

此库可在 crates.io 上找到。在您的 Cargo.toml 中放置

[dependencies]
pupil = "0.1"

一个实用示例可以在 src/bin/pupil.rs 中找到。

文档可在网上找到 此处

首先创建其环境,该环境将包含可用的内置函数和最后一个答案。

extern crate pupil;

// Creates an empty environment.
let empty = pupil::Env::new();
// Creates an environment initialized with the default builtins.
let env = pupil::Env::default();

创建一个表达式并将其绑定到其环境。

let mut expr = pupil::Expr::new(&env);

// Feed it input, note that you cannot give it partial tokens.
expr.feed("2 +").unwrap();
expr.feed("3").unwrap();

// Calculate the final result.
let result = expr.result().unwrap();

您可以在一步中执行表达式评估。

let result = pupil::Expr::new(&env).eval("2 + 3").unwrap();

就是这样。

许可证

MIT - 请参阅 license.txt

依赖项

~43KB