Don't execute semant test if parsing fails
[tiger.ml.git] / README.md
1 Tiger.ml
2 ========
3 A Tiger-compiler implementation in (OCa)ML
4
5 Status
6 ------
7
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 - [x] implementation
19 - [ ] refactoring
20 - [ ] Travis CI
21
22 ### Features
23 #### Done
24 - [x] ch 1: Warm-up AST
25 - [x] ch 2: Lexer
26 - [x] ch 3: Parser
27 - [x] ch 4: AST
28 #### In-progress
29 - [-] ch 5: Semantic Analysis (type checking)
30 #### TODO (short-term)
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
38 #### TODO (long-term)
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
47 #### Maybe
48 - [ ] ch 14: Object-Oriented Languages
49
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
62
63 ### Machine
64 Will most-likely compile to RISC and execute using SPIM (as favored by Appel)
This page took 0.066827 seconds and 4 git commands to generate.