sebastianselander
f2e8a02255
Removed adhoc tests
2023-02-17 12:01:22 +01:00
sebastianselander
a9f54dbca1
Simplified quite a bit. Made a unify function. Still bugs left
2023-02-17 11:09:48 +01:00
sebastianselander
eafe0fea0b
Rewrote using unification-fd. Heavily inspired (aka copied) from:
...
https://byorgey.wordpress.com/2021/09/08/implementing-hindley-milner-with-the-unification-fd-library/
2023-02-16 16:37:36 +01:00
Martin Fredin
d345ccb33b
Fix import statement
2023-02-16 14:22:40 +01:00
Samuel Hammersberg
ab34666484
Fixed types on functions in the code generator.
2023-02-16 14:16:08 +01:00
Samuel Hammersberg
6d9c42a03e
Got higher order functions working.
2023-02-16 13:36:45 +01:00
Samuel Hammersberg
46c6f5b7ab
Fixed scoping of function pointers.
2023-02-16 11:17:45 +01:00
Samuel Hammersberg
5680334fde
Fixed some small issues.
2023-02-16 10:03:25 +01:00
Martin Fredin
7ef7090aa5
Merge llvm_testing, and use TypeCheckerIr instead of Abs
2023-02-16 02:17:07 +01:00
Samuel Hammersberg
8d698cecf9
Fixed some merge errors that occured when merging with main
...
Started implementing EApp.
Simple function calls now work.
Removed the LLVM standard library as it was not needed.
Limited functionality.
Got EApp working!!
Fixed arguments being inserted in the wrong order.
Updated the showing of `Call` so that it inserts a space inbetween arguments.
Removed some unused code from the generated main functions.
Force removed language.
Expressions that are simply just calling a constant now work properly.
Fixed constants being called inside nested expressions.
Cleaned up the compiler a bit.
Added a test suite, testing that the output from programs is correct, "evaluating the whole process".
Fixed a typo in basic-4.sf
Fixed basic-8 to work without a renamer.
Fixed some nicer output in the main function.
Made the outputted LLVM Ir somewhat nicer.
Fixed a typo and updated how SetVariable works.
Formatted and added documentation.
Added instructions allowing for branching.
2023-02-16 00:16:44 +01:00
Martin Fredin
210e55bb15
Adjust old type checker to new syntax, and refactor lambda lifter to use typed AST
2023-02-15 23:55:16 +01:00
sebastianselander
f1b77a7efa
Refactored. Cleaner version, ala Martin version
2023-02-15 19:52:52 +01:00
sebastianselander
b03df17e34
Minor changes. Added a comment
2023-02-15 18:10:28 +01:00
sebastianselander
7619e36c60
Inference works better now. Still work to do. Should use proper library
2023-02-15 17:40:18 +01:00
sebastianselander
ad3f6b7011
Attempt at fixing EApp, failed.
2023-02-14 22:35:00 +01:00
sebastianselander
5d247057f5
Minor rewrite of tc. Some bugs still left
2023-02-14 22:03:56 +01:00
sebastianselander
6218efac20
Renamer done.
...
It renames bound variables to numbers, converts let to lambda, and
removes all variables from binds
2023-02-14 16:44:38 +01:00
Rakarake
514c809b1e
Pinned nix channel, made makefile not error
2023-02-14 15:47:36 +01:00
sebastianselander
53314551f5
A bit cleaner code. A renamer is the focus to make the tc simpler
2023-02-14 12:56:07 +01:00
sebastianselander
200a9e57ed
Fixed EId, more work on other expressions needed
2023-02-14 10:12:38 +01:00
sebastianselander
c10d7703ad
Progression on type checker ;)
2023-02-13 19:03:06 +01:00
sebastianselander
73dc2e4b6a
Inference on most expressions. HM based.
...
Still have to figure out how to infer type of lambda variables, as well
as how function application on polymorphic should work
2023-02-13 12:17:49 +01:00
Samuel Hammersberg
7c1e1d57a0
Merge remote-tracking branch 'origin/main' into llvm_testing
2023-02-12 13:17:45 +01:00
Samuel Hammersberg
9f4c3a3cbf
Merge pull request #6 from bachelor-group-66-systemf/codegen-martin-4
...
Add lambda lifter
2023-02-12 12:06:49 +00:00
Martin Fredin
3fe990ceaa
Don't run interpreter by default
2023-02-12 13:01:12 +01:00
Samuel Hammersberg
818e57ff14
Updated main to use the updated Code Generator.
2023-02-11 14:14:21 +01:00
Samuel Hammersberg
5d5a610cca
Made compiler state more generic, and compile no longer outputs IO and instead returns the result.
2023-02-11 14:12:27 +01:00
Martin Fredin
d67eddcf0f
Fix interpreter
2023-02-11 11:04:39 +01:00
Martin Fredin
e212c79a44
Revert back to one lambda par, and fix issues with lambda lifter
2023-02-11 09:59:26 +01:00
Martin Fredin
78a3ed56ea
Add test
2023-02-10 16:55:56 +01:00
Martin Fredin
f3600ffdf8
Fix documentation and small things
2023-02-10 16:45:33 +01:00
Martin Fredin
5956cdf121
Fix typo
2023-02-10 16:45:33 +01:00
Martin Fredin
8688b303ac
Fix unnecessary supercombinator issue
2023-02-10 16:45:33 +01:00
Martin Fredin
ece621b0aa
Fix auxiliary path
2023-02-10 16:45:33 +01:00
Martin Fredin
8663f2ea50
Some clean up and documenting
2023-02-10 16:45:33 +01:00
Martin Fredin
8c094236aa
Add auxiliary module
2023-02-10 16:45:33 +01:00
Martin Fredin
3d8bd24c7b
Fix basic tests
2023-02-10 16:45:33 +01:00
Martin Fredin
bd792f7785
Add llvm dep
2023-02-10 16:45:33 +01:00
Martin Fredin
08917be1c6
Fix first unnecessary supercombinator
2023-02-10 16:45:33 +01:00
Martin Fredin
69254f8032
Finish Lambda Lifter
2023-02-10 16:45:33 +01:00
Martin Fredin
2a48b7477e
Implement lambda lifting passes: freeVars, abstract, and rename
2023-02-10 16:45:33 +01:00
Martin Fredin
b64b49b1eb
Remove files from git
2023-02-10 16:45:33 +01:00
Martin Fredin
61efcebc64
Fix conflict
2023-02-10 16:45:33 +01:00
Samuel Hammersberg
e7ef268c12
Splat LLVM Ir into its own file.
2023-02-10 16:08:45 +01:00
sebastianselander
a1e9624d5e
TTGing the lambda lifter
2023-02-10 12:09:08 +01:00
sebastianselander
f4f1786be3
Revert "Merge branch 'typechecking' into codegen-martin-3"
...
This reverts commit e000e5159f , reversing
changes made to 3ac8377fa0 .
2023-02-10 10:46:09 +01:00
Sebastian Selander
771c73c0db
Merge pull request #5 from bachelor-group-66-systemf/codegen-martin-3
...
Codegen martin 3
2023-02-10 10:33:50 +01:00
sebastianselander
e000e5159f
Merge branch 'typechecking' into codegen-martin-3
2023-02-10 10:33:15 +01:00
Martin Fredin
3ac8377fa0
Fix auxiliary path
2023-02-09 20:25:00 +01:00
Martin Fredin
59fb773bc1
Some clean up and documenting
2023-02-09 20:24:25 +01:00