https://github.com/janbaig/pratt-parser
A Top Down Operator Precedence Parser
https://github.com/janbaig/pratt-parser
parser pratt-parser
Last synced: 8 months ago
JSON representation
A Top Down Operator Precedence Parser
- Host: GitHub
- URL: https://github.com/janbaig/pratt-parser
- Owner: janbaig
- Created: 2022-12-11T18:50:43.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-27T21:11:26.000Z (over 2 years ago)
- Last Synced: 2025-01-16T21:50:48.019Z (over 1 year ago)
- Topics: parser, pratt-parser
- Language: C++
- Homepage:
- Size: 71.3 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TDOP-Parser
Top Down Operator Precedence (TDOP) parsing is a parsing technique introduced by Vaughan Pratt in a 1973 paper.
The technique combines the best properties of recursive descent and operator precedence.
This program can successfully parse and evaluate a given expression in accordance to a predefined set of precedence rules.
## Example
In accordance to BEDMAS, the input expression `2 * 10 / 5 - 1 + 4` can be successfully parsed and evaluated. The following is the output:
```
> 2 * 10 / 5 - 1 + 4
Precedence Parsing:
( ( 2 * ( 10 / 5 ) ) - ( 1 + 4 ) )
Interpreter results:
-1
Tree Structure:
Left: 10, Right: 5, Operator: /
Left: 2, Right: ( 10 / 5 ), Operator: *
Left: 1, Right: 4, Operator: +
Left: ( 2 * ( 10 / 5 ) ), Right: ( 1 + 4 ), Operator: -
```
## Precedence Table (BEDMAS)
| Operator | Precedence |
| ----------- | ----------- |
| `-` | 0 |
| `+` | 1 |
| `*` | 2 |
| `/` | 3 |
## Future Goals
- [x] Implement a Custom Lexer
- [x] Implement a Stack-based Interpreter
- [ ] Support for Unary & Ternary Operators
- [ ] Allow decimal values as input
- [ ] Create User Interface