https://github.com/hopson97/pyrpn
Mini Reverse Polish Notation (Postfix notation) parser and evaluator
https://github.com/hopson97/pyrpn
Last synced: about 1 year ago
JSON representation
Mini Reverse Polish Notation (Postfix notation) parser and evaluator
- Host: GitHub
- URL: https://github.com/hopson97/pyrpn
- Owner: Hopson97
- Created: 2020-08-05T12:31:50.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-08-05T20:52:31.000Z (about 6 years ago)
- Last Synced: 2025-01-17T13:48:28.685Z (over 1 year ago)
- Language: Python
- Size: 18.6 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PyRPN
Mini Reverse Polish Notation (Postfix notation) parser and evaluator
It uses a stack based system.
| Keyword | Definition | Stack Before | Stack After |
|---------|-------------------------------------------------------|--------------|-------------|
| `dup` | Duplicates the stack top | 5 5 4 | 5 5 4 4 |
| `swap` | Swap the top 2 stack items | 1 2 3 | 1 3 2 |
| `rot` | Rotates the top 3 stack items | 1 2 3 | 3 1 2 |
| `drop` | Removes the last stack item | 1 2 3 | 1 2 |
| `sum` | Sums up the stack, and pushes the result | 1 2 3 | 6 |
| `avg` | Averages the stack, pushes result | 2 4 6 | 3 |
| `print` | Pops and prints the stack top | 5 5 | 5 |
| `+` | Adds the top two stack items, pushes the result | 5 10 15 | 5 25 |
| `-` | Subtracts the top two stack items, pushes the result | 5 10 15 | 5 -5 |
| `*` | Multiplies the top two stack items, pushes the result | 2 5.5 2 | 11.0 |
| `/` | Divides the top two stack items, pushes the result | 5 10 2 | 5 5 |
Example:
Input: `15.5 1.5 + 2 swap + 2 5 * - print `
Output: `-9.0`