Description
In this homework, you need to complete parserr.py (and modify other files if necessary) so that our parser builds a tree from the below three cases.
- Grouped Expression (ex. 1 * (2 + 5))
- Single Number Expression (ex. 25)
- Expression with Negative Sign (ex. -25 * 3)
Test Cases
This section provides several test cases to check whether you wrote a parser correctly. In the main.py, you will change srcCode with the below test cases and see whether your output results are matched with the ones given in the table.
| import lexer import parserr
srcCode = “1 * (2 + 5)” tokSeq = lexer.tokenize(srcCode) rootNode = parserr.parse(tokSeq) parserr.printTree(rootNode) print() |
main.py
| Test Case (srcCode) | Output Result |
| 1 * ( 2 + 5 ) | (1 * ( 2 + 5 )) |
| (1 + 2) * 5 + 4 | (((1 + 2) * 5) + 4) |
| 23 * ((1 + 5) * 33) | (23 * ((1 + 5) * 33)) |
| 24 | 24 |
| 125 | 125 |
Page 1 of 2
| -5 | ((0 – 1) * 5) |
| – -5 | (((0-1)*(0-1))*5) |
| – (-5) | ((0-1)*((0-1)*5)) |




