The world’s Largest Sharp Brain Virtual Experts Marketplace Just a click Away
Levels Tought:
Elementary,Middle School,High School,College,University,PHD
| Teaching Since: | Apr 2017 |
| Last Sign in: | 103 Weeks Ago, 3 Days Ago |
| Questions Answered: | 4870 |
| Tutorials Posted: | 4863 |
MBA IT, Mater in Science and Technology
Devry
Jul-1996 - Jul-2000
Professor
Devry University
Mar-2010 - Oct-2016
Rust program questions: Write a complete Rust program that follows the requirement below. Thank you.
Write a [postfix](https://en.wikipedia.org/wiki/Reverse_Polish_notation) expression evaluator. An expression consists of operands and operators. An operand is a signed integer (`isize`). An operator is `+`, `-`, or `*` with their common semantics. An expression is valid if it can be evaluated to a signed integer.
For example, the following are valid expressions:
```
-100
1 2 +
1 2 3 + *
```
The following expressions are invalid:
```
// empty expression
-1 -2
1 2 + *
```
## Public API
Your program must provide the following public API.
```
pub enum Operator {
// `+`
Add,
// `-`
Sub,
// `*`
Mul,
}
pub enum Token {
Operator(Operator),
Operand(isize),
}
/// Evaluates the postix expression.
///
/// Input: a postfix expression, where each element contains an operator or operand.
/// Returns: if the postfix expression is valid, returns `Some(value)`;
/// otherwise, returns `None`.
pub fn eval(tokens: &[Token]) -> Option<isize> {
// TODO
unimplemented!();
}
```