Validating language constructs in Java using PLY tools in Python A project for the Automata Formal Languages & Logic course for 3rd semester