From ce514df6a62564900095e44c557063a5f6cec807 Mon Sep 17 00:00:00 2001 From: Aadhavan Srinivasan Date: Sun, 26 Nov 2023 13:38:45 -0500 Subject: [PATCH] Added README --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..a09d091 --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# Pycalc + +**Pycalc** is a simple expression calculator. It can evaluate mathematical expressions, and output the result of the evaluation. + +## How it works +1. Scan the expression + - Check for malformed expression and invalid characters + - Tokenize the expression (I wrote a custom parser to do this) + 2. If there are any parantheses, replace the parantheses with the result of the sub-expression. + 3. Evaluate the overall expression (which should no longer have any parantheses) + +Rather than building a tree from the expression (which is the recommended approach), I have opted to perform the substitutions in-place. This means that the result of an operation replaces the operation itself. The reason I chose to do this, is that my parsing algorithm considers everything inside parantheses as a single token. Therefore, it is fairly easy to replace this token with the result of the expression within the parantheses. + +## Features +- Order of operations +- Arbitrary whitespace +- Parantheses +- Simple error checking + +## To-do +- Simple algebraic parsing (assign values to variables, etc.) +- More robust error-checking