# Compiler Construction PA3 Worklog


## Team:
**Apoorva Ranade**(ar6496)&nbsp;&nbsp;&nbsp;**Sanjar Ahmadov**(sa5640)&nbsp;&nbsp;&nbsp;**Yinqi Sun**(ys3540)
<br>


## Challenges:
 -  Nested structures were a challenge. A function inside a function/class needs us to build correct scoping as well as dealing with dependencies.
    -  This is dealt by the class:StackVarRuntimeInfo and function:getStackVar. 
 -  Handling Strings was difficult as storage and access was more complex than lists.
    -  In order for us to easily determine the correctness, we intentionally matches the error messages to the reference implementation.
 -  Creation and use of objects was a major challenge.
    -  
 -  Testing various scenarious with similarly defined variables were time consuming. Instead, we defined certain set of variables in the beginning of the student contributed test programs, and then used the same variables throughout the programs to cover various bad and good scenarious.
 -  Another challenge was to come up with good test cases to have a broader cover. Our approach to this issue was investigating Type Checking rules and writing adverse code to those rules to see if our analyzer can make correct inferences. 

## Improvements: 
  - Added more tests to rigorously check program flow. And a test(diff.py) to show a case where our implementation showed better recoverability compared to the reference compiler.
