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 | ||
e6e82c08 | 8 | ![screenshot-tests-head](screenshots/tests-head.jpg) |
3206cc89 | 9 | ... |
e6e82c08 | 10 | ![screenshot-tests-tail](screenshots/tests-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 | |
e6e82c08 SK |
52 | - [ ] test time-outs (motive: cycle non-detection caused an infinite loop) |
53 | - [ ] parallel test execution | |
3206cc89 SK |
54 | - [ ] Travis CI |
55 | ||
5f295d04 SK |
56 | Implementation Notes |
57 | -------------------- | |
58 | ||
59 | ### Parser | |
60 | ||
61 | #### shift/reduce conflicts | |
62 | ##### grouping consecutive declarations | |
63 | ##### lval | |
64 | ||
65 | ### AST | |
66 | ||
67 | #### print as M-exp | |
188ac950 SK |
68 | |
69 | ### Machine | |
70 | Will most-likely compile to RISC and execute using SPIM (as favored by Appel) |