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 | |
17 | - [ ] grid view (cols: lex, pars, semant, etc.; rows: test cases.) | |
18 | - [ ] Travis CI | |
19 | ||
20 | ### Features | |
21 | #### Done | |
6a560b4a SK |
22 | - [x] ch 1: Warm-up AST |
23 | - [x] ch 2: Lexer | |
24 | - [x] ch 3: Parser | |
25 | - [x] ch 4: AST | |
188ac950 | 26 | #### In-progress |
6a560b4a | 27 | - [-] ch 5: Semantic Analysis (type checking) |
188ac950 | 28 | #### TODO (short-term) |
6a560b4a SK |
29 | - [ ] ch 6: Activation Records |
30 | - [ ] ch 7: Translation to Intermediate Code | |
31 | - [ ] ch 08: Basic Blocks and Traces | |
32 | - [ ] ch 09: Instruction Selection | |
33 | - [ ] ch 10: Liveness Analysis | |
34 | - [ ] ch 11: Register Allocation | |
35 | - [ ] ch 12: Putting It All Together | |
188ac950 | 36 | #### TODO (long-term) |
6a560b4a SK |
37 | - [ ] ch 13: Garbage Collection |
38 | - [ ] ch 15: Functional Programming Languages | |
39 | - [ ] ch 16: Polymorphic Types | |
40 | - [ ] ch 17: Dataflow Analysis | |
41 | - [ ] ch 18: Loop Optimizations | |
42 | - [ ] ch 19: Static Single-Assignment Form | |
43 | - [ ] ch 20: Pipelining and Scheduling | |
44 | - [ ] ch 21: The Memory Hierarchy | |
188ac950 | 45 | #### Maybe |
6a560b4a SK |
46 | - [ ] ch 14: Object-Oriented Languages |
47 | ||
5f295d04 SK |
48 | Implementation Notes |
49 | -------------------- | |
50 | ||
51 | ### Parser | |
52 | ||
53 | #### shift/reduce conflicts | |
54 | ##### grouping consecutive declarations | |
55 | ##### lval | |
56 | ||
57 | ### AST | |
58 | ||
59 | #### print as M-exp | |
188ac950 SK |
60 | |
61 | ### Machine | |
62 | Will most-likely compile to RISC and execute using SPIM (as favored by Appel) |