Complete semantic analysis
[tiger.ml.git] / README.md
CommitLineData
96ad2fee
SK
1Tiger.ml
2========
188ac950 3A Tiger-compiler implementation in (OCa)ML
96ad2fee 4
6a560b4a
SK
5Status
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
54Implementation 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
68Will most-likely compile to RISC and execute using SPIM (as favored by Appel)
This page took 0.022553 seconds and 4 git commands to generate.