ALGOL60-ish language to MU assembly compiler -------------------------------------------- Welcome ------- So here's the result of our little project, more useful for a demonstration of lex and yacc than anything else. Or in the words of Corey Sanders, "I'm sure there will be lots of people just itching to get ahold of software that will translate a dead language into non-existant machine language. History ------- This compiler was the result of a project by Corey Sanders and George Greer (the "I" in this document) for their senior compiler project with Dr. Jim Kiper of Miami University, Ohio. We had to choose (or create) a suitable language and then write a compiler in stages that would translate the high-level code into an assembly language understood by an esoteric little blackbox called the "MU Assembler." The only identification in the assembler was: MU Interpreter by Charlie Huddleston version 1.04, 22 Feb 97 It was apparently written for a previous compilers course but I do not have the source code to it, nor was I interested in it at the time. I do have the binary for the assembler still but it relies on libg++ 2.7 which I don't have handy. If you really want the assembler, you could write one yourself from the specification easier. Since Corey and I were both taking a comparative languages course with Dr. Alton Sanders at the time and covering ALGOL60, we decided it would be a simple enough language to implement. You have to think a language that BNF was invented for would be easy to write in Yacc, right? Unfortunately, Dr. Sanders' guess of ~26 pages wasn't exactly close for a description of the length of the specification. We decided to drop a few features we really didn't want to implement, like pass by name (wasn't in the project specification anyway), and added a few we felt were easy enough, such as C-style commenting. Too bad the assembly program didn't follow its own specifications on processing the 'declare' statements in exection order. It actually just reads the whole program looking for 'declare' statements first, then executes the program. So we post-process the output and shove all the 'declare' statements at the top of the resulting output. Gross but effective. Project ------- The 'report/' directory contains all of the material we received and turned in. It, oddly enough, contains the grammar specification and the original assignment. We were lazy in writing our grammar out so we had Yacc do it with 'y.output'. License ------- All files are under the GNU General Public License v2. If you really must have some file under a difference license, just ask. This isn't exactly fulfilling a useful purpose in its current state after all. Contact ------- George Greer greerga@m-l.org Corey Sanders corey.sanders@email.com