nitrix
0594542167
Enums: Make EnumDefinition use EnumValues instead of Strings as children.
...
This allows us to store the index of the enum value along the name. The index can be used to compare two enum values in assembler.
Later on this might be used to enable users of KLang to set arbitrary values as the index of an enum value.
2023-03-20 19:30:07 +01:00
nitrix
77fe360ffa
Evaluate: Implement evaluation for enums.
2023-03-20 19:10:40 +01:00
nitrix
55a5b8f54a
Make sure that a variable that references an enum has to be initialized.
2023-03-16 00:01:31 +01:00
nitrix
2768b4429c
Check that a struct field name of a struct declaration does not shadow an enum or a struct definition.
2023-03-15 23:48:57 +01:00
nitrix
30dfbbbbba
Check that a variable name of variable declaration does not shadow an enum definition.
2023-03-15 23:33:12 +01:00
nitrix
f77d6a002d
Check that a parameter name of a function definition does not shadow an enum definition.
2023-03-15 23:17:43 +01:00
nitrix
22634c9652
Use LinkedHashMaps and LinkedHashSets to preserve the order of parameters and struct fields.
2023-03-15 23:08:38 +01:00
nitrix
6fd3f5a2e6
Make it possible to use an enum in an expression (i.e. selecting one of the enum values: Foo.A)
2023-03-15 19:14:04 +01:00
nitrix
3b928d621b
Refactor FunctionDefinition and Parameter context analysis and extend the type check to include enums.
2023-03-15 17:47:58 +01:00
nitrix
9a58afb550
Implement StructField type checking in ContextAnalysis.
2023-03-15 17:21:35 +01:00
nitrix
6e4431652c
Remove FunctionInformation and replace it with FunctionDefinition.
2023-03-15 16:19:42 +01:00
nitrix
7af815042b
WIP: Add enum support
2023-03-15 15:56:42 +01:00
Marvin Kaiser
49b024b95f
32: Require data type for all asm functions
2020-03-17 16:02:03 +01:00
Marvin Kaiser
982fc6417d
32: Create Meta ASM Structure
2020-03-14 14:14:19 +01:00
nitrix
221b928d0e
push all args onto stack before moving them into the local var to ensure that the function parameters can be used in the tail recursive function call
2020-03-10 12:07:55 +01:00
Marvin Kaiser
8dd0b6cffa
Fix pretty printing to file
2020-03-10 11:21:49 +01:00
nitrix
5a5191612e
visit block first because the condition variable may be initialized inside the block
2020-03-09 23:04:55 +01:00
Dennis Kaiser
36a38ee7ab
Merge branch '16-tail-recursion-optimization' into 'master'
...
Resolve "Tail Recursion Optimization"
Closes #16
See merge request mkais001/klang!18
2020-03-09 22:59:38 +01:00
nitrix
89ec828499
remove unused import
2020-03-09 21:32:40 +01:00
nitrix
9df0da89ff
implement junit tests
2020-03-09 21:32:05 +01:00
nitrix
35de3c7de4
implement test for tail call optimization
2020-03-09 17:10:50 +01:00
nitrix
704e6441ca
move float result into rax before further processing
2020-03-09 16:09:15 +01:00
nitrix
cb5ceafbbc
implement tail recursion call optimization when generation function call
2020-03-09 15:58:15 +01:00
nitrix
d96b083c41
add metadata to class fields during visit of function definition nodes
2020-03-09 15:57:37 +01:00
nitrix
acaa37b3b1
implement detection of tail calls
2020-03-09 15:55:23 +01:00
nitrix
d1cf626934
add flag to indicate whether this is a tail call
2020-03-09 15:55:01 +01:00
Dennis Kaiser
4f1d009626
Merge branch '24-structs' into 'master'
...
Resolve "Structs"
Closes #24
See merge request mkais001/klang!17
2020-03-09 14:43:17 +01:00
nitrix
ac6cb22e45
delete print statement
2020-03-09 14:19:43 +01:00
nitrix
14f80b46cc
remove whitespace
2020-03-09 14:12:19 +01:00
nitrix
4a9e5c30e1
implement test_expected functions for all types in use
2020-03-09 14:10:35 +01:00
nitrix
0adb9e22da
implement print function for struct addresses and bools
2020-03-09 14:10:03 +01:00
nitrix
1f8de66751
update the struct test so that field c of the test struct is of type double
2020-03-09 13:49:09 +01:00
nitrix
fc16663dae
make floats work in structs
2020-03-09 13:48:31 +01:00
nitrix
31330db676
replace DOT with PERIOD
2020-03-09 12:53:26 +01:00
nitrix
8bb912b377
implement isNumericType
2020-03-09 12:51:28 +01:00
nitrix
3b5dc43cfb
implement test functions
2020-03-09 12:49:09 +01:00
nitrix
08398e4064
add struct test function prototype
2020-03-09 12:48:31 +01:00
nitrix
b776ac00e3
call struct tests
2020-03-09 12:48:31 +01:00
nitrix
9adc48da82
implement struct tests
2020-03-09 12:48:31 +01:00
nitrix
1403e0a231
fix indices
2020-03-09 12:48:31 +01:00
nitrix
02666a9459
implement visitors
2020-03-09 12:48:31 +01:00
nitrix
32cb06cd51
implement method that returns the index of a field by name
2020-03-09 12:48:31 +01:00
nitrix
e3d8f3cfa7
implement field access visitor
2020-03-09 12:48:31 +01:00
nitrix
90ed033943
implement fielfd assignment node
2020-03-09 12:48:31 +01:00
nitrix
ed4c901c6c
add field assignment to statements
2020-03-09 12:48:31 +01:00
nitrix
86e77d1609
update the struct definition when following the path
2020-03-09 12:48:31 +01:00
nitrix
eb75cc7838
implement GenASM for structs
2020-03-09 12:48:31 +01:00
nitrix
e2986b3d65
add the struct name to the struct field access expression node
2020-03-09 12:48:31 +01:00
nitrix
1693eb6426
implement helper functions to determine the struct size and field offsets
2020-03-09 12:48:31 +01:00
nitrix
622be803cc
add structs to the constructor params of GenASM
2020-03-09 12:48:31 +01:00