-
Notifications
You must be signed in to change notification settings - Fork 5
Project Planning Part 4 Report
Our motto throughout the project has been to work early and work consistently. Fortunately, Friday turned out to the be the day of week where none of the team members had a class so we set that day aside to work on the project. This also fit in well with the meetings scheduled with our TA, David each Monday so that we could share the progress we made over the weekend. As far tools are concerned, we used Github and Slack extensively for planning. All docs that required collaboration were written in Github wiki's, whereas useful lists of resources, documents etc were shared on Slack. Lastly, to track progress we frequently maintained minutes of the meeting and created issues (tagged as feature requests) for anything we discussed that required either immediate or later work.
Since the initial version of JSJS, languages like OCaml and Scala has served as primary inspiration. As a result, a lot of features and design ideas have been taken from these languages. The specification for the set of features we had originally planned primarily included a high-level idea of the features we want to support and the syntax of our language. The specification was built iteratively and we did not wait for it to be complete before we started to code. Our final concrete specification was laid out in the LRM which we referred out for guidance. Whenever the language started to diverge from the LRM, we ensured that the LRM was kept updated at all times.
The development process followed the stages of the compiler. Our goal was to finish the scanner and parser quickly, so that the type-checker and the codegen could be worked on. Once we had a whole pipeline ready, we built each feature from end to end, ie. from AST to codegen. We also placed tests front and center in our development process and coupled every feature with a set of accompanying test cases comprising of valid executable programs and error messages.
Try to work with people who are accustomed to working with. Start early and try to grok MicroC's implementation as early in the course as you can. Have a strong test suite, invest in your Makefile and use Github issues for planning. Oh, and never submit a pull-request without attaching a cat gif.
JSJS © 2016