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