In September I spent a lot of time with the grammar of PACSTCL. Both in developing the grammar further than I had coming out of the CSforALL Bootcamp, and in preparing the PACSTCL code to parse the grammar. This post is going to start out by defining computer grammar in understandable terms, then it will go into some of the decisions going into and the quirks coming out of PACSTCL's grammar.
This past June I got involved with a project to improve computer science teaching in Pennsylvania. As a teaching assistant at a CSforAllPA Boot Camp, a week long training for teachers to learn computer science, we found a need for an interpreter for the language defined by their certification exam. The creators of this exam defined a new programming language, specifically for displaying questions on their exam, but with little consideration for how teachers would be expected to familiarize themselves with the language or the test. Coming off the success of my senior project, started by a friend of mine to build a programming language pretty much from scratch, I suggested instead of attempting to substitute Java for the exam language, we not-so-simply build our own interpreter for it.