Commit | Line | Data |
---|---|---|
96ad2fee SK |
1 | Tiger.ml |
2 | ======== | |
188ac950 | 3 | A Tiger-compiler implementation in (OCa)ML |
96ad2fee | 4 | |
6a560b4a SK |
5 | Status |
6 | ------ | |
7 | ||
188ac950 SK |
8 | ### Technical issues |
9 | - [-] testing framework | |
10 | - [x] run arbitrary code snippets | |
11 | - [x] check non-failures | |
12 | - [x] check expected output | |
13 | - [-] check expected exceptions | |
14 | - [x] semant stage | |
15 | - [ ] generalized expect `Output ('a option) | Exception of (exn -> bool)` | |
16 | - [x] run all book test case files | |
b53d50d3 SK |
17 | - [-] grid view (cols: lex, pars, semant, etc.; rows: test cases.) |
18 | - [x] implementation | |
19 | - [ ] refactoring | |
188ac950 SK |
20 | - [ ] Travis CI |
21 | ||
22 | ### Features | |
23 | #### Done | |
6a560b4a SK |
24 | - [x] ch 1: Warm-up AST |
25 | - [x] ch 2: Lexer | |
26 | - [x] ch 3: Parser | |
27 | - [x] ch 4: AST | |
188ac950 | 28 | #### In-progress |
6a560b4a | 29 | - [-] ch 5: Semantic Analysis (type checking) |
188ac950 | 30 | #### TODO (short-term) |
6a560b4a SK |
31 | - [ ] ch 6: Activation Records |
32 | - [ ] ch 7: Translation to Intermediate Code | |
33 | - [ ] ch 08: Basic Blocks and Traces | |
34 | - [ ] ch 09: Instruction Selection | |
35 | - [ ] ch 10: Liveness Analysis | |
36 | - [ ] ch 11: Register Allocation | |
37 | - [ ] ch 12: Putting It All Together | |
188ac950 | 38 | #### TODO (long-term) |
6a560b4a SK |
39 | - [ ] ch 13: Garbage Collection |
40 | - [ ] ch 15: Functional Programming Languages | |
41 | - [ ] ch 16: Polymorphic Types | |
42 | - [ ] ch 17: Dataflow Analysis | |
43 | - [ ] ch 18: Loop Optimizations | |
44 | - [ ] ch 19: Static Single-Assignment Form | |
45 | - [ ] ch 20: Pipelining and Scheduling | |
46 | - [ ] ch 21: The Memory Hierarchy | |
188ac950 | 47 | #### Maybe |
6a560b4a SK |
48 | - [ ] ch 14: Object-Oriented Languages |
49 | ||
5f295d04 SK |
50 | Implementation Notes |
51 | -------------------- | |
52 | ||
53 | ### Parser | |
54 | ||
55 | #### shift/reduce conflicts | |
56 | ##### grouping consecutive declarations | |
57 | ##### lval | |
58 | ||
59 | ### AST | |
60 | ||
61 | #### print as M-exp | |
188ac950 SK |
62 | |
63 | ### Machine | |
64 | Will most-likely compile to RISC and execute using SPIM (as favored by Appel) |