2e38b9dabc
Make the type checker recognize enum definitions
...
This patch makes it such that if you define an enum inside of a scope,
the type checker will remember it. There is currently no support for
field accesses.
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-30 10:46:00 +03:00
2469b38464
Add error message if a variable is already declared
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-27 09:19:02 +03:00
b170e9a424
Add some support for recursive structs
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-27 05:47:06 +03:00
c5747a103e
Add support for multiple field accesses in parser and type checker
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-27 04:03:51 +03:00
24967b3eb7
Remove commented out code
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-17 13:18:08 +03:00
8d666c0308
Make undefined variables be treated as strings
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-17 13:14:54 +03:00
4782252f7e
Add support for prefix increment/decrement ops
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-11 09:20:15 +03:00
f65507c5e1
Add support for assign stacking
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-10 19:26:20 +03:00
1caebf3295
Do stuff
...
I forgor
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-10 11:34:43 +03:00
cb3183ba64
Fix bug with empty returns
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-09 02:34:41 +03:00
a5fd0f24dc
Add support for empty returns
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-09 02:31:23 +03:00
66faf71ec7
Add support for struct field accesses
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-09 02:24:45 +03:00
a372c4420a
Fix bug with finding function calls
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-09 02:22:09 +03:00
a966ff45a3
Improve messages, implement* field access
...
Compiler messages are now printed in color with their respective code,
field access support has been added in the type checker. However, field
access nodes that contain other field access nodes are not yet
supported.
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-08 11:42:39 +03:00
0f5db0972c
Use LLVM-18
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-04-08 00:11:36 +03:00
81b0c139ef
Add initial support for structs
...
There is an issue with calling C functions sadly because LLVM seems to
prefer passing each element as its own parameter than "packing" them
into 64 bit registers.
Signed-off-by: Slendi <slendi@socopon.com>
2024-03-26 13:32:51 +02:00
177a41ebd2
Add support for structure definitions and initializers
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-03-12 10:15:38 +02:00
453689642c
Add support for function declarations
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-03-10 01:30:46 +02:00
a88806e1e7
Remove trailing whitespace
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-03-03 03:20:09 +02:00
3f2ee15302
Add support for while loops
2024-03-02 21:47:36 +02:00
907a5d12ca
Add support for infinite loops
2024-03-02 20:46:57 +02:00
71c337a3f4
Add support for comparison operators
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-03-01 15:30:25 +02:00
92c8509125
Add support for if-else
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-03-01 14:07:11 +02:00
327f2bdd86
Add support for variables to LLVM emitter
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-02-29 16:20:51 +02:00
5455919d6e
LLVM my beloved
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-02-29 14:04:28 +02:00
484d1a6e2c
Add support or extern function
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-02-29 09:29:21 +02:00
9d7f79e576
Add support for pointer types and arrays
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-02-28 16:45:56 +02:00
7ab94d4ed5
Implement binary in the lexer
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-02-28 16:35:40 +02:00
eb258c8f4c
Improve error message logging for function calls
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-02-28 16:19:01 +02:00
78c8e50bbf
Move code to separate folder
...
Signed-off-by: Slendi <slendi@socopon.com>
2024-02-28 15:07:08 +02:00