Compiler Construction with Basic Programming Languages Constructs and Generalized Interpreting Automata
We have been developing and applying an approach to teach compiler construction that has been showing very promising results (reported by students and the author alike), and we believe that the main reasons for that are: (i) a hands-on approach, in teams, where students actually do the job and classes are essentially meetings to present and discuss the development of their project, very few lectures; (ii) a ludic approach, where they are stimulated, for instance, to create a logo to their project, relating it to things they identify with (such as a warlock on World of Warcraft); the use of real-world project development tools, and share their successes and failures; and, last but not least, (iii) a formal semantic framework that allows for efficient execution and yet a precise way to describe standard components of a compiler together with additional validation components for programs in the language being compiled. Our formal framework is comprised by Generalized Interpreting Automata, an automata-based formalism to describe the operational semantics of programming languages that generalizes Gordon Plotkin's Interpreting Automata approach, and the Basic Programming Languages Constructs (BPLC) library, a set of programming languages constructs inspired by Peter Mosses' Component-Based Semantics.
READ FULL TEXT