Commit graph

59 commits

Author SHA1 Message Date
Rakarake
579153b679 Merged 2023-04-27 14:02:10 +02:00
Rakarake
60e12b622e Using type annotations in case expressions, monomorphizer now handles case expressions without crashing 2023-04-27 13:55:54 +02:00
Samuel Hammersberg
d026dca42f Attacked the code generator and added bool support. 2023-04-27 13:49:00 +02:00
Rakarake
2611ddc2b2 Fixed wrong handeling of EAdd in monomorphizer, as well as more documentation and cleanup 2023-04-18 15:48:25 +02:00
Rakarake
a23269f907 Fixed small bug in monomorphizer 2023-04-17 15:53:16 +02:00
Rakarake
c2bf6312f6 Monomorphizer now outputs constructors that are matched on but not created 2023-04-12 16:36:22 +02:00
Martin Fredin
a109b3010d Fix bad inference on case expression, and make pretty for report 2023-04-08 21:52:57 +02:00
Martin Fredin
9870802371 Add implicit foralls for bidir, update and unify pipeline 2023-04-05 17:26:52 +02:00
Rakarake
c6e0e40ef1 Monomorphizer now monomorphizes data 2023-04-05 03:03:42 +02:00
Martin Fredin
03bb6a8534 Fix sample-program 2023-04-03 09:42:14 +02:00
Rakarake
b8f717f39f Merge branch 'monomorphizer-data' into pattern-matching-with-typechecking 2023-03-31 18:59:05 +02:00
Rakarake
00e23a16dd Monomorphization of datatypes done! 2023-03-31 18:58:33 +02:00
Samuel Hammersberg
e2e469d84e Added some examples that were shown to our handledare. 2023-03-31 18:17:28 +02:00
Rakarake
15c18271ba Monomorphizer, fixed problem with type of bind 2023-03-31 17:53:56 +02:00
Rakarake
d097cd28e8 New morb tree for internal use in monomorphizer, data types implemented 2023-03-31 17:02:54 +02:00
Martin Fredin
bbe0d77a19 Add signature of inferred bind to allow some mutually defined definitions 2023-03-30 12:35:47 +02:00
Martin Fredin
52db1943bb Finished new check pattern 2023-03-29 11:26:47 +02:00
Martin Fredin
76b1c55065 Progress 2023-03-29 11:26:47 +02:00
Martin Fredin
133cc31e77 Fix lambda lifter 2023-03-29 11:26:47 +02:00
Rakarake
b35c19572f Newer changes 2023-03-28 15:26:35 +02:00
Rakarake
4a6c72fce0 Removed codegen to compile, type seem to work for newly added example 2023-03-27 20:11:49 +02:00
Rakarake
0d23a59f0c Merged into commit not compiling on codegen 😤 2023-03-27 19:14:35 +02:00
Martin Fredin
ac3f222753 Add bidirectional type checker, lambda lifter. 2023-03-27 16:07:11 +02:00
Samuel Hammersberg
ccfae19541 Added .crf to every sample-program 2023-03-26 18:38:07 +02:00
Samuel Hammersberg
7e246a94e5 Fixed a segfault. 2023-03-24 19:57:49 +01:00
sebastianselander
56ccd793ac more error messages and better unification 2023-03-24 18:21:07 +01:00
sebastianselander
41fc863658 added PEnum 2023-03-24 17:39:34 +01:00
Samuel Hammersberg
d6d0fb7146 Enabled compiling to llvm again. 2023-03-24 17:29:00 +01:00
Samuel Hammersberg
b1209b3353 Updated the monomorphizer to the new tree. 2023-03-24 17:13:56 +01:00
Samuel Hammersberg
d3d173eb59 Merge remote-tracking branch 'origin/typechecking-merge' into pattern-matching-with-typechecking 2023-03-23 16:33:05 +01:00
sebastianselander
8d1330ad42 typechecker is compatible with one extra addition to the spec 2023-03-23 11:13:48 +01:00
sebastianselander
936cb1301f new grammar and adapted renamer 2023-03-22 12:45:51 +01:00
sebastianselander
88a4a934b8 added more manual tests 2023-03-22 10:32:22 +01:00
Samuel Hammersberg
bbf7a47e74 Started updating the Code Generator to the new monomorphizer tree. 2023-03-21 09:39:05 +01:00
Rakarake
d377ded7e1 Deleted bad sample programs, added polymorphic call in polymorphic function test 2023-03-08 17:38:50 +01:00
Samuel Hammersberg
350cd3b0e9 Started importing Sebastian's new typechecker. 2023-03-08 11:01:07 +01:00
sebastianselander
fce54e7899 documented possible bad functions 2023-03-06 16:41:59 +01:00
sebastianselander
eef6fa7668 added new test and found another bug 2023-03-06 16:25:03 +01:00
sebastianselander
6947614fba Updated bug list & started working on more tests 2023-03-06 13:04:07 +01:00
Samuel Hammersberg
5d004f4286 Added calling conventions to functions. 2023-02-24 09:00:29 +01:00
Samuel Hammersberg
4df3f705ed LLVMIr code now has the fastcc flag to enable speeed 😎 2023-02-20 16:44:27 +01:00
Samuel Hammersberg
cd0f9dd456 The output directory is now cleared when the program is ran. 2023-02-20 15:27:13 +01:00
Samuel Hammersberg
a36de2bde1 Added support for the minus operator. 2023-02-20 14:52:11 +01:00
Samuel Hammersberg
6749650223 Added support for pattern matching on ints. Might need a lookover. 2023-02-20 14:39:43 +01:00
Martin Fredin
a3e57dde7b Change grammar: only one bind in let and no EAnn for typed syntax 2023-02-18 13:02:25 +01:00
Samuel Hammersberg
7cedc2e28c Started adding cases to the grammar. 2023-02-17 15:25:06 +01:00
Samuel Hammersberg
ab34666484 Fixed types on functions in the code generator. 2023-02-16 14:16:08 +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