Expand description
calculation + conversion
cpc parses and evaluates strings of math, with support for units and conversion. 128-bit decimal floating points are used for high accuracy.
cpc lets you mix units, so for example 1 km - 1m results in Number { value: 999, unit: Meter }.
Check out the list of supported units
§Example usage
use cpc::eval;
use cpc::units::Unit;
match eval("3m + 1cm", true, Unit::Celsius, false) {
Ok(answer) => {
// answer: Number { value: 301, unit: Unit::Centimeter }
println!("Evaluated value: {} {:?}", answer.value, answer.unit)
},
Err(e) => {
println!("{e}")
}
}
Modules§
- evaluator
- Turns an
AstNode
into aNumber
- lexer
- Turns a string into
Token
s - parser
- Turns
Token
s into anAstNode
- units
- Units, and functions you can use with them
Macros§
Structs§
- Number
- A number with a
Unit
.
Enums§
- Constant
- A constant like
Pi
orE
. - Function
Identifier - Functions identifiers like
Sqrt
,Sin
,Round
, etc. - Lexer
Keyword - A temporary enum used by the
lexer
to later determine whatToken
it is. - Named
Number - A named number like
Million
. - Operator
- Math operators like
Multiply
, parentheses, etc. - Text
Operator - A Text operator like
To
orOf
. - Token
- A token like a
Number
,Operator
,Unit
etc. - Unary
Operator - Unary operators like
Percent
andFactorial
.