For the first iteration of this project, my partner and I reviewed what we were tasked to create. Initially, we didn't fully comprehend the entirety of the specifications, so we broke down the specifications into smaller parts that allowed us to understand what components we wanted to develop. After we understood what these components were, we were able to understand how we wanted to build the scanner.
In building the scanner, we decided that we would use a linked list to contain all of the regular expressions that we would need to match the input text to token types, and methods that would utilize the list to achieve the end goal of outputting a list of tokens. For splitting up the work, we decided that my partner would write the methods while I wrote the variable declarations and the list of regular expressions. As each component was created, we created tests that tested each individual component to make sure that they functioned as we had desired them to. As we built the components, we created our tests with the end output of each component in mind and adjusted the tests' structures as the variables and component structures changed.
After we had finished writing out the code for all of these components and passing the tests provided to us and those that we created, we realized that the code we had could use some simplifying. Primarily, we changed the construction of the list of regular expressions to be done separately from the scan method and during the creation of a new Scanner object through the use of a private variable and a public method that would construct the hard-coded list. The reason for this change was because we realized that it would be better for this static list of regular expressions to be constructed and deconstructed when the Scanner object was created and deconstructed instead of every time the scan method is called. Furthermore, our list of regular expressions took up 5 lines of code for each expression when the list is created. So we chose to make a method that would create a node in the linked list for each time it is called with the parameters of: the regular expression, and the token type to be matched.
Overall, the development during this iteration went fairly well and we should make only one change to our development practices. That is, we should occasionally exchange the parts of the project that we are working on instead of having solely one person coding a part of the code and the other person coding the other part of the code. Otherwise, the development practices that we used work well for the time being and will continue using them and change accordingly to the circumstances of future iterations.