2 个不稳定版本
0.2.0 | 2021年4月23日 |
---|---|
0.1.0 | 2021年4月22日 |
#64 在 #calculate
32KB
786 行
wcal
用 Rust 编写的计算器
允许的操作符:+
-
*
/
(
)
.
结果可以是 i128
或 f64
。当结果是 i128
并且发生除法转换时,例如 3/2=1
,将会出现警告。
此计算器有三个步骤
- 使用
logos
将表达式解析为标记。 - 使用解析器将标记解析为 AST。
- 从 AST 计算结果。
以下解析器可用
- 自顶向下解析器(默认)
库使用
示例
use wcal::{calculator, parser};
fn main() {
let res: f64 = calculator!("1+2").unwrap();
assert_eq!(res, 3f64);
let res: i128 = calculator("1+2", wcal::parser::top_down_parser::parse).unwrap();
assert_eq!(res, 3);
let res: f64 = calculator("1+2", wcal::parser::top_down_parser::parse).unwrap();
assert_eq!(res, 3f64);
}
有关此包的更多用法,请参阅文档。
可执行文件使用
构建
要求: rust
cargo
$ cargo run build --release
命令行模式
$ wcal "2*6+(1/2)" -f "2*6+(1/2)"
i> 2*6+(1/2)
Warning: division will cause a cast
12
f> 2*6+(1/2)
12.5
默认模式是 i128
,使用 -f
切换到 f64
,使用 -i
切换回。
交互式模式
$ wcal
i> help
i Enter i128 mod
f Enter f64 mod
quit
q Quit
i> f
Enter f64 mod
f> 1/2
0.5
f> quit
Bye!
依赖项
~1.5MB