Compilers
Spring 2011
Documents
- Schedule - Revised April 28, 2011
- Syllabus and Policies - Revised January 14, 2011
- Academic Honesty
Assignments
-
Project One - An interesting lexer and parser.
- Look at Alan's example to get you started.
- Project Two - Lex, Parse, and Semantic Analysis, oh my!
- Final Project - A full compiler (w/code gen) for your own grammar
Resources
- Compiler Jobs
- Compiler writing resources on Stack Overflow
- LLVM - Compiler Infrastructure
- Experiment with LLVM and Clang in your browser
- GraphViz
- A reading list for JVM developers
- Emscripten - an LLVM-to-JavaScript compiler
- Microsoft's Parallel Computing Developer Center
- Jasmin at SourceForge
- Jasmin Tutorial
- JavaCC
- Beginning JavaCC
- BNF for Java - from Sun
- ANTLR grammar for JavaScript
- Jasper
- Grammatica C# Compiler Compiler
- JS/CC: JavaScript Compiler Compiler
- W3 Schools: JavaScript
- Doug Crockford on JavaScript
- JavaScript is Getting Faster and Faster
- XML and DTDs
- XSL Transformations
- XSLT Standard
Articles
- Why ML is good for writing compilers
- Facebook wrote their own PHP-to-C++ compiler
- Anders Hejlsberg on LINQ and Functional Programming
- Microsoft's Shift to Parallel Computing
- Parallel computing support in the next version of Visual Studio
- Microsoft Research Common Compiler Infrastructure
- C Recursion - by Kernighan, Ritchie, and Lovecraft
- Comments on Comments
-
The "Software Engineering Radio" Podcast
I really like these folks. Highly recommended. Here are a few episodes to get you started:
Compiler Construction Concurrency
Examples
- Inside the JVM Interactive Illustrations
- JVM Viewer - Watch your (Jasmin) code execute.
- Simple Parser 1 in C#
- Simple Parser 1 in JavaScript
- ZIP: AlanC, a simple lexer via JavaCC
- Shift-Reduce Parse examples from MIT
- AST and Symbol Table example
- OMeta attribute grammar example
- Simple code generation example one
- Simple code generation example two
Student Compilers
-
Current
- Alan's SimpleParser Example - in JavaScript
- Your Compilers Coming Soon
- Past
-
Operating System for Testing. (Run only in FireFox. Really.)
- JRC Kernel (Has single step feature.)
- Operating Systems for Exploring Earlier versions, may have BNE issues, not final.
I reserve the copyright for all parts of my courses.
Commercial reproduction of any course material, including lecture notes
taken by students, without my EXPRESS WRITTEN consent, is prohibited.
Seriously.