Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/janbaig/tdop-parser
A Top Down Operator Precedence Parser
https://github.com/janbaig/tdop-parser
parser pratt-parser
Last synced: 3 days ago
JSON representation
A Top Down Operator Precedence Parser
- Host: GitHub
- URL: https://github.com/janbaig/tdop-parser
- Owner: JanBaig
- Created: 2022-12-11T18:50:43.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-27T21:11:26.000Z (about 1 year ago)
- Last Synced: 2023-10-27T22:29:18.319Z (about 1 year ago)
- Topics: parser, pratt-parser
- Language: C++
- Homepage:
- Size: 71.3 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- 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 + 4Precedence Parsing:
( ( 2 * ( 10 / 5 ) ) - ( 1 + 4 ) )Interpreter results:
-1Tree 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