X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=README.md;h=e3ecf596de1aade4bea36846c361ad6e2634d911;hb=b53d50d3d7395376979b6fb90863901b5dd69cfe;hp=632225a4993760aab5a0c0515b84058539f83858;hpb=96ad2fee9c1cde8e8ab49c2589b381ad5a4a750e;p=tiger.ml.git diff --git a/README.md b/README.md index 632225a..e3ecf59 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,64 @@ Tiger.ml ======== +A Tiger-compiler implementation in (OCa)ML -Project Plan ------------- - -I. Fundamentals of Compilation - 1. Introduction - 2. Lexical Analysis - 3. Parsing - 4. Abstract Syntax - 5. Semantic Analysis - 6. Activation Records - 7. Translation to Intermediate Code - 8. Basic Blocks and Traces - 9. Instruction Selection - 10. Liveness Analysis - 11. Register Allocation - 12. Putting It -II. Advanced Topics - 13. Garbage Collection - 14. Object-Oriented Languages - 15. Functional Programming Languages - 16. Polymorphic Types - 17. Dataflow Analysis - 18. Loop Optimizations - 19. Static Single-Assignment Form - 20. Pipelining and Scheduling - 21. The Memory Hierarchy +Status +------ + +### Technical issues +- [-] testing framework + - [x] run arbitrary code snippets + - [x] check non-failures + - [x] check expected output + - [-] check expected exceptions + - [x] semant stage + - [ ] generalized expect `Output ('a option) | Exception of (exn -> bool)` + - [x] run all book test case files + - [-] grid view (cols: lex, pars, semant, etc.; rows: test cases.) + - [x] implementation + - [ ] refactoring +- [ ] Travis CI + +### Features +#### Done +- [x] ch 1: Warm-up AST +- [x] ch 2: Lexer +- [x] ch 3: Parser +- [x] ch 4: AST +#### In-progress +- [-] ch 5: Semantic Analysis (type checking) +#### TODO (short-term) +- [ ] ch 6: Activation Records +- [ ] ch 7: Translation to Intermediate Code +- [ ] ch 08: Basic Blocks and Traces +- [ ] ch 09: Instruction Selection +- [ ] ch 10: Liveness Analysis +- [ ] ch 11: Register Allocation +- [ ] ch 12: Putting It All Together +#### TODO (long-term) +- [ ] ch 13: Garbage Collection +- [ ] ch 15: Functional Programming Languages +- [ ] ch 16: Polymorphic Types +- [ ] ch 17: Dataflow Analysis +- [ ] ch 18: Loop Optimizations +- [ ] ch 19: Static Single-Assignment Form +- [ ] ch 20: Pipelining and Scheduling +- [ ] ch 21: The Memory Hierarchy +#### Maybe +- [ ] ch 14: Object-Oriented Languages + +Implementation Notes +-------------------- + +### Parser + +#### shift/reduce conflicts +##### grouping consecutive declarations +##### lval + +### AST + +#### print as M-exp + +### Machine +Will most-likely compile to RISC and execute using SPIM (as favored by Appel)