Repository created to keep track of requested task implementation.
For problem requirements check description.
Calculator runs on Akka HTTP server. String input is parsed using Scala's parsers combinators and then evaluated by transforming Expression AST into Akka Streams graph in an attempt to use pipelining and parallelism.
Flow is as follows:
- Consider all expressions with the highest-level nesting of parentheses in parallel
- Change division to multiplication and perform them all in parallel
- Change subtraction to addition and perform them all in parallel
- Remove meaningless parentheses and if expression is not a number, go back to step 1.