First of all, the "calc.py" file in folder "calc" is my implement of the exercise. To test that, you just need to run "calc.py" directly. And if you want to change the input file, you can modify the filename in the last part of "calc.py".
To be honest, I used to build a compiler in Linux envirnment, using lex and yacc in C-Based language. The folder of "Final_Project_0116316" was the earlier project I wrote to compile C with "While", "For", "If" statement in College. But I didn't have a Linux envirnment now, and I found a library online called "ply" which can let you use lex and yacc in Python. Then I chose to use the Python to implement this.
About the assessment exercise, I would like to ask student the architecture this exercise, like what roles are lex and yacc playing in this exercise and let them point out the part of code about lex and yacc separately. If they can point out their lex and yacc part of code and briefly explain their code, then answer that lex is about spliting tokens, yacc is about parsing the syntac. I will think they are acceptable understanding for this exercise. On the other hand, if they made some mistakes of above, they might not understanding enough.
In the end, I am sorry about that I'm not familiar with CI, I've never used them before. But the deadline is approaching, I hope you can forgive that and won't let that effect my chance to be a grader. Thank you very much.