You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
1.7 KiB
23 lines
1.7 KiB
# Compiler Construction PA3 Worklog
|
|
|
|
|
|
## Team:
|
|
**Apoorva Ranade**(ar6496) **Sanjar Ahmadov**(sa5640) **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 deal with dependencies.
|
|
- This is dealt by the class:StackVarRuntimeInfo and function:getStackVar. Dynamic links were maintained in the call stack for each function to access stack frames of previous function.
|
|
- 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.
|
|
- Objects required allocation of space on the heap and access to each object required dereferencing the pointer to the objects.
|
|
- Testing various scenarious with similarly defined variables were time consuming.
|
|
- Synchronizing the implementation was extra challening for pa3 compared to previous ones. Reason was the flexbility and freedom of the code generation step. Our RISC-V code did not need to match the one generated by reference compiler though we tried to get as close to it as we can.
|
|
- Agreeing on the common interfaces and behavior of the compiler was necessary to make synchronization easier.
|
|
|
|
## Improvements:
|
|
- More checks and error messages.
|
|
- Added extra error state to the compiler if the actual parameter and formal parameter of the function can not resolve to a type. For example, if function expects an integer type parameter while the caller passes in a string typed param then our compiler will warn the user accordingly
|