How to resolve the algorithm Parsing/RPN calculator algorithm step by step in the Wren programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Parsing/RPN calculator algorithm step by step in the Wren programming language
Table of Contents
Problem Statement
Create a stack-based evaluator for an expression in reverse Polish notation (RPN) that also shows the changes in the stack as each individual token is processed as a table.
3 4 2 * 1 5 - 2 3 ^ ^ / +
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Parsing/RPN calculator algorithm step by step in the Wren programming language
Source code in the wren programming language
import "/seq" for Stack
var rpnCalculate = Fn.new { |expr|
if (expr == "") Fiber.abort("Expression cannot be empty.")
System.print("For expression = %(expr)\n")
System.print("Token Action Stack")
var tokens = expr.split(" ").where { |t| t != "" }
var stack = Stack.new()
for (token in tokens) {
var d = Num.fromString(token)
if (d) {
stack.push(d)
System.print(" %(d) Push num onto top of stack %(stack)")
} else if ((token.count > 1) || !"+-*/^".contains(token)) {
Fiber.abort("%(token) is not a valid token.")
} else if (stack.count < 2) {
Fiber.abort("Stack contains too few operands.")
} else {
var d1 = stack.pop()
var d2 = stack.pop()
stack.push(token == "+" ? d2 + d1 :
token == "-" ? d2 - d1 :
token == "*" ? d2 * d1 :
token == "/" ? d2 / d1 : d2.pow(d1))
System.print(" %(token) Apply op to top of stack %(stack)")
}
}
System.print("\nThe final value is %(stack.pop())")
}
var expr = "3 4 2 * 1 5 - 2 3 ^ ^ / +"
rpnCalculate.call(expr)
You may also check:How to resolve the algorithm Date format step by step in the Terraform programming language
You may also check:How to resolve the algorithm Problem of Apollonius step by step in the Ruby programming language
You may also check:How to resolve the algorithm Matrix multiplication step by step in the LFE programming language
You may also check:How to resolve the algorithm Walk a directory/Recursively step by step in the Wren programming language
You may also check:How to resolve the algorithm Substring/Top and tail step by step in the Lua programming language