diff --git a/README.md b/README.md index e4b8a45..3e1a870 100644 --- a/README.md +++ b/README.md @@ -96,10 +96,84 @@ This is what generates the AST from tokens. This is what generates expressions from tokens. +## Todo + +### Compiler + +- [x] Tokenizer +- [x] Scanner +- [x] Functions +- [x] Variables +- [x] Error messages +- [x] Expression parser +- [x] Function calls +- [x] Parallel compilation +- [x] Syscalls +- [x] Variable lifetimes +- [x] Branches +- [x] Loops +- [ ] Data structures +- [ ] Type system +- [ ] Type operator: `|` (`User | Error`) +- [ ] Hexadecimal, octal and binary literals +- [ ] Error handling +- [ ] Multiple return values +- [ ] Threading library +- [ ] Self-hosted compiler + +### Keywords + +- [ ] `for` +- [x] `if` +- [x] `import` +- [x] `loop` +- [x] `return` +- [ ] `switch` + +### Optimizations + +- [x] Exclude unused functions +- [ ] Expression folding +- [ ] Function call inlining +- [ ] Loop unrolls + +### Linter + +- [x] Unused variables +- [x] Unused parameters +- [ ] Unused imports +- [ ] Unnecessary newlines +- [ ] Ineffective assignments + +### Operators + +- [x] `=` +- [x] `+`, `-`, `*`, `/` +- [x] `+=`, `-=`, `*=`, `/=` +- [x] `==`, `!=`, `<`, `<=`, `>`, `>=` +- [x] `&&`, `||` +- [ ] `%` +- [ ] `<<`, `>>` +- [ ] `<<=`, `>>=` +- [ ] `&`, `|`, `^` +- [ ] `&=`, `|=`, `^=` + +### Architecture + +- [ ] arm64 +- [ ] wasm +- [x] x86-64 + +### Platform + +- [x] Linux +- [ ] Mac +- [ ] Windows + ## Tests ```shell -go test ./... -v +go test ./... -v -cover ``` ## Benchmarks