cae72e296d85d6335d16666b9a7fc706896fce67
[tiger.ml.git] / README.md
1 Tiger.ml
2 ========
3 A Tiger-compiler implementation in (OCa)ML
4
5 Status
6 ------
7
8 ![screenshot-tests-head](screenshots/tests-head.jpg)
9 ...
10 ![screenshot-tests-tail](screenshots/tests-tail.jpg)
11
12 ### Features
13 #### Done
14 - [x] ch 1: Warm-up AST
15 - [x] ch 2: Lexer
16 - [x] ch 3: Parser
17 - [x] ch 4: AST
18 - [x] ch 5: Semantic Analysis (type checking)
19 #### In-progress
20 - [ ] ch 6: Activation Records
21 #### TODO (short-term)
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
28 #### TODO (long-term)
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
37 #### Maybe
38 - [ ] ch 14: Object-Oriented Languages
39
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 - [ ] test time-outs (motive: cycle non-detection caused an infinite loop)
53 - [ ] parallel test execution
54 - [ ] Travis CI
55
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
68
69 ### Machine
70 Will most-likely compile to RISC and execute using SPIM (as favored by Appel)
This page took 0.043878 seconds and 3 git commands to generate.