Martin Fredin
a3e57dde7b
Change grammar: only one bind in let and no EAnn for typed syntax
2023-02-18 13:02:25 +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
Samuel Hammersberg
7c1e1d57a0
Merge remote-tracking branch 'origin/main' into llvm_testing
2023-02-12 13:17:45 +01: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
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
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
Samuel Hammersberg
7a0ff5d708
Formatted and documented code.
2023-02-09 09:45:05 +01:00
Samuel Hammersberg
dbbbc725ea
Stuck at a conundrum
2023-02-06 16:49:29 +01:00
Samuel Hammersberg
721192c242
Started implemented multiple functions.
2023-02-06 15:44:54 +01:00
Samuel Hammersberg
d41db9bbb8
Added some more to the comment of binExprToValues
2023-02-04 15:25:28 +01:00
Samuel Hammersberg
cd47f7dde3
renamed evalToValues to binExprToValues
2023-02-04 15:21:04 +01:00
Samuel Hammersberg
d779605814
Added the src/Grammar folder to the gitingore.
2023-02-04 15:12:32 +01:00
Samuel Hammersberg
66fb77c84e
Added some missing math operators
2023-02-04 15:11:56 +01:00
Samuel Hammersberg
026949ae7e
Added support for subtraction
2023-02-04 13:20:46 +01:00
Samuel Hammersberg
f8d320bb6d
Heavily shorted down the emitAdd function, and added a emitInt function.
2023-02-04 12:43:47 +01:00
Samuel Hammersberg
57f8b6ba5b
Optimized add even further.
2023-02-04 11:35:57 +01:00
Samuel Hammersberg
f9c5a520e3
Implemented addition.
2023-02-04 11:29:59 +01:00
Samuel Hammersberg
819f4c9406
Made a simple code generator that outputs to LLVM IR
2023-02-03 16:59:36 +01:00
Samuel Hammersberg
defe409d78
Added a comment about the includeStr "macro"
2023-01-24 11:43:54 +01:00
Samuel Hammersberg
fd64a7e669
Added a function to load the Standard LLVM library at runtime.
2023-01-24 11:38:33 +01:00
Samuel Hammersberg
213e47097e
Split the compiler into it's own module and added a file for the LLVM standard library.
2023-01-23 16:57:32 +01:00
Samuel Hammersberg
b389e397b6
Started working on a simple compiler.
2023-01-22 19:43:08 +01:00
Samuel Hammersberg
df3bf7c6ab
Added the missing Lex and Par file.
2023-01-22 19:42:14 +01:00
Martin Fredin
787dbd85db
Add Makefile, add remove Grammar dir
2023-01-21 19:44:22 +01:00
Martin Fredin
499ced914c
Fix judgment
2023-01-20 14:16:18 +01:00
Martin Fredin
64ee4dc432
Implement basic interpreted language
2023-01-20 14:12:04 +01:00
Martin Fredin
7caadcbeb9
Use src instead of app
2023-01-17 15:34:32 +01:00