-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathroadmap.txt
More file actions
39 lines (31 loc) · 1.15 KB
/
roadmap.txt
File metadata and controls
39 lines (31 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
LEXER TODO
✅ escaping quotes in strings
✅ add EOF token
-- properly eat whitespaces
-- hex/bin numbers
PARSER TODO
✅ procedure head func printf(format: String, arguments: Int32, ...) -> Void #foreign
✅ procedure body return
✅ procedure call a = printf(format: a, arguments: b, a);
✅ variable declaration a := 1; a : Int = 1;
✅ constant declaration a :: 1; a : Int : 1;
✅ struct declaration struct Name { }
✅ type inference 1st pass a = proc_a();
✅ if else
✅ while loop
✅ break, continue
✅ binary operators a+b; a-b; a/b; a*a;
✅ unary operators -a; ~a; !a; *a; (B)a ; ^a;
✅ variable assignment a = b;
-- constant expressions
-- variable assignment as binary operation
-- switch
-- array literal a : Int[3] = [1]; a := (Float[3])[1]
-- tuple literal a : (Int, String) = (1, "a");
-- struct instance literal x := Struct { a = 1, b = 2 }; // all unspecified are left as default
-- type inference 2nd pass
-- add scope to Ast (to ident debug output)
-- add cursor to Ast (for 2nd pass error messaging)
IR Gen TODO
✅ structures
-- arrays