44 Commits

Author SHA1 Message Date
Ulf Norell
4c872c4690 Optimize single variable closure envs 2019-05-07 13:16:39 +02:00
Ulf Norell
26b7c5bf12 Compile lambdas and higher-order functions 2019-05-07 13:16:39 +02:00
Ulf Norell
ff0f2b57d2 Change map_get/set to operators in fcode 2019-05-07 13:16:39 +02:00
Ulf Norell
c06e032199 Fix name resolution bug 2019-05-07 13:16:39 +02:00
Ulf Norell
2291f8d4c1 Compile bytes(N)
Compile to FATE strings for now
2019-05-07 13:16:39 +02:00
Ulf Norell
1f40d2a321 Compile builtins 2019-05-07 13:16:39 +02:00
Ulf Norell
6f17477c72 Distinguish local vars and top-level names already in fcode 2019-05-07 13:16:39 +02:00
Ulf Norell
4a8fb5ba05 Compile maps 2019-05-07 13:16:39 +02:00
Ulf Norell
cd454fb538 Compile all the operators 2019-05-07 13:16:39 +02:00
Ulf Norell
8559ab0628 fix minor bugs 2019-05-07 13:16:39 +02:00
Ulf Norell
4c2288274d no-op fcode optimization pass 2019-05-07 13:16:39 +02:00
Ulf Norell
690d55eefe pretty printing for function calls 2019-05-07 13:16:39 +02:00
Ulf Norell
97db2b9800 variables are now lists of names in fcode 2019-05-07 13:16:39 +02:00
Ulf Norell
e13e81d1ca fix breakage after unary operators 2019-05-07 13:16:39 +02:00
Ulf Norell
8a5c64ad45 Compile function calls
(to fully saturated top-level functions only)
2019-05-07 13:16:39 +02:00
Ulf Norell
a4bbe2bc2f Unary operators 2019-05-07 13:16:39 +02:00
Ulf Norell
272c247b4d compile address literals 2019-05-07 13:16:39 +02:00
Ulf Norell
3c6e06e99a Compile character literals 2019-05-07 13:16:39 +02:00
Ulf Norell
b7153b1d75 string literals and pattern matching on the same 2019-05-07 13:16:39 +02:00
Ulf Norell
9ac5a36265 Compile variants 2019-05-07 13:16:39 +02:00
Ulf Norell
ed60cd8ddc Use SETELEMENT instruction 2019-05-07 13:16:39 +02:00
Ulf Norell
f896b84221 Compile record update 2019-05-07 13:16:39 +02:00
Ulf Norell
5c77237316 compile records (patterns and construction) 2019-05-07 13:16:38 +02:00
Ulf Norell
d333b5f11f Compile list patterns 2019-05-07 13:16:38 +02:00
Ulf Norell
6042294f96 Compile pattern matching on integer literals 2019-05-07 13:16:38 +02:00
Ulf Norell
25f80da827 Remove unused argument 2019-05-07 13:16:38 +02:00
Ulf Norell
96bff0c32f Fix dialyzer things 2019-05-07 13:16:38 +02:00
Ulf Norell
ff58ec0cba Remove 'if' from fcode 2019-05-07 13:16:38 +02:00
Ulf Norell
ee7bc126fc Another renaming bug 2019-05-07 13:16:38 +02:00
Ulf Norell
cca83a5dfa Fix renaming bug 2019-05-07 13:16:38 +02:00
Ulf Norell
f73a0934d4 Pretty printer for fcode 2019-05-07 13:16:38 +02:00
Ulf Norell
771e4aa967 Fix various bugs in pattern match compilation 2019-05-07 13:16:38 +02:00
Ulf Norell
e597a3780a compile list literals 2019-05-07 13:16:38 +02:00
Ulf Norell
3a095cde7e Add missing case in renaming 2019-05-07 13:16:38 +02:00
Ulf Norell
e2c48e1069 wip: rewrite case tree compiler to handle catch-alls
still with debug printing, and can't compile it yet
2019-05-07 13:16:38 +02:00
Ulf Norell
ab13222d29 Pattern matching on booleans 2019-05-07 13:16:38 +02:00
Ulf Norell
41387ce0b1 Compile nested pattern matching to case trees
(Only tuple and variable patterns so far)
2019-05-07 13:16:38 +02:00
Ulf Norell
788840f0fa Compile tuple construction 2019-05-07 13:16:38 +02:00
Ulf Norell
47a48812b8 Fix minor bug 2019-05-07 13:16:38 +02:00
Ulf Norell
200f80cc89 Compile shallow matching on tuples 2019-05-07 13:16:38 +02:00
Ulf Norell
d37ef8cec2 Basic tuple patterns 2019-05-07 13:16:38 +02:00
Ulf Norell
216fbc6144 Fix and improve broken bytecode optimisations 2019-05-07 13:16:38 +02:00
Ulf Norell
33bb8a37d0 Compile let to FATE 2019-05-07 13:16:38 +02:00
Ulf Norell
bc8b2d1c81 Start on new intermediate code for FATE 2019-05-07 13:16:38 +02:00