| 1 | Tiger.ml |
| 2 | ======== |
| 3 | |
| 4 | Status |
| 5 | ------ |
| 6 | |
| 7 | ### Done |
| 8 | - [x] ch 1: Warm-up AST |
| 9 | - [x] ch 2: Lexer |
| 10 | - [x] ch 3: Parser |
| 11 | - [x] ch 4: AST |
| 12 | ### TODO (short-term) |
| 13 | - [-] ch 5: Semantic Analysis (type checking) |
| 14 | - [ ] ch 6: Activation Records |
| 15 | - [ ] ch 7: Translation to Intermediate Code |
| 16 | - [ ] ch 08: Basic Blocks and Traces |
| 17 | - [ ] ch 09: Instruction Selection |
| 18 | - [ ] ch 10: Liveness Analysis |
| 19 | - [ ] ch 11: Register Allocation |
| 20 | - [ ] ch 12: Putting It All Together |
| 21 | ### TODO (long-term) |
| 22 | - [ ] ch 13: Garbage Collection |
| 23 | - [ ] ch 15: Functional Programming Languages |
| 24 | - [ ] ch 16: Polymorphic Types |
| 25 | - [ ] ch 17: Dataflow Analysis |
| 26 | - [ ] ch 18: Loop Optimizations |
| 27 | - [ ] ch 19: Static Single-Assignment Form |
| 28 | - [ ] ch 20: Pipelining and Scheduling |
| 29 | - [ ] ch 21: The Memory Hierarchy |
| 30 | ### Maybe |
| 31 | - [ ] ch 14: Object-Oriented Languages |
| 32 | |
| 33 | Implementation Notes |
| 34 | -------------------- |
| 35 | |
| 36 | ### Parser |
| 37 | |
| 38 | #### shift/reduce conflicts |
| 39 | ##### grouping consecutive declarations |
| 40 | ##### lval |
| 41 | |
| 42 | ### AST |
| 43 | |
| 44 | #### print as M-exp |