
CSE 401 17wi Compiler Project
Project Description and Assignments
- MiniJava information
- Starter code - including files that build a scanner and parser for a tiny example language to demonstrate how the tool chain works.
- Scanner, due Thur. Jan. 19 at 11:00 pm.
- Parser & abstract syntax, due Thur. Feb. 2 at 11 pm.
- Static semantics, type checking, and symbol tables, due Thur. Feb. 16 at 11 pm.
- Code generation, due Tue. Feb. 28 at 11 pm.
- Compiler additions, due Thur. March 9 at 11 pm
- Project report, due Sat. March 11 at 11:59 pm in the course assignment dropbox. No late reports accepted.
Resources
- MiniJava project web page; MiniJava grammar (resources from Appel's compiler book)
- CSE GitLab
- Short gitlab tutorial for CSE 401
- git book - detailed info
- CSE Virtual Machines (useful for testing generated code on personal machines)
- JFlex lexical analyzer generator and CUP LALR parser generator (including manuals for JFlex and CUP). Current versions of the JFlex and CUP executable code are included in the starter project. Feel free to download the full distributions if you wish to examine additional files for reference.
- The Java Language Specification from Sun, including a LALR(1) grammar for full Java. Check here if you're not sure how something should work.
- x86-64 resources:
- x86-64 Instructions and ABI (handout for University of Chicago CMSC 22620 by John Reppy)
- x86-64 Machine Level Programming by Bryant and O'Hallaron (CMU; earlier version of Sec. 3.13 of Computer Systems: A Programmer's Perspective, 2nd ed.)
- Bryant/O'Hallaron CSE 351 textbook web site (links to various x86/x86-64 resources)
- gdb summary (direct link)
- One they didn't include:
display/i $rip
will show you the next instruction every time you step or reach a breakpoint.
- One they didn't include:
- SSE floating point
- gdb summary (direct link)
- gdb documentation
- reference card (direct link)
- Intel processor documentation.
- Gnu assembler documentation (x86 and x86-64 details, at&t vs Intel syntax)
Test Programs
There are several MiniJava test programs on the MiniJava project web site that are included in the starter code.. Additional test programs may be provided here later.
Computer Science & Engineering University of Washington Box 352350 Seattle, WA 98195-2350 (206) 543-1695 voice, (206) 543-2969 FAX
Comments to adminanchor