Commit Graph

182 Commits

Author SHA1 Message Date
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
3b928d621b Refactor FunctionDefinition and Parameter context analysis and extend the type check to include enums. 2023-03-15 17:47:58 +01:00
9a58afb550 Implement StructField type checking in ContextAnalysis. 2023-03-15 17:21:35 +01:00
6e4431652c Remove FunctionInformation and replace it with FunctionDefinition. 2023-03-15 16:19:42 +01:00
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
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
5a5191612e visit block first because the condition variable may be initialized inside the block 2020-03-09 23:04:55 +01:00
704e6441ca move float result into rax before further processing 2020-03-09 16:09:15 +01:00
cb5ceafbbc implement tail recursion call optimization when generation function call 2020-03-09 15:58:15 +01:00
d96b083c41 add metadata to class fields during visit of function definition nodes 2020-03-09 15:57:37 +01:00
acaa37b3b1 implement detection of tail calls 2020-03-09 15:55:23 +01:00
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
ac6cb22e45 delete print statement 2020-03-09 14:19:43 +01:00
fc16663dae make floats work in structs 2020-03-09 13:48:31 +01:00
31330db676 replace DOT with PERIOD 2020-03-09 12:53:26 +01:00
8bb912b377 implement isNumericType 2020-03-09 12:51:28 +01:00
1403e0a231 fix indices 2020-03-09 12:48:31 +01:00
02666a9459 implement visitors 2020-03-09 12:48:31 +01:00
32cb06cd51 implement method that returns the index of a field by name 2020-03-09 12:48:31 +01:00
e3d8f3cfa7 implement field access visitor 2020-03-09 12:48:31 +01:00
90ed033943 implement fielfd assignment node 2020-03-09 12:48:31 +01:00
ed4c901c6c add field assignment to statements 2020-03-09 12:48:31 +01:00
86e77d1609 update the struct definition when following the path 2020-03-09 12:48:31 +01:00
eb75cc7838 implement GenASM for structs 2020-03-09 12:48:31 +01:00
e2986b3d65 add the struct name to the struct field access expression node 2020-03-09 12:48:31 +01:00
1693eb6426 implement helper functions to determine the struct size and field offsets 2020-03-09 12:48:31 +01:00
622be803cc add structs to the constructor params of GenASM 2020-03-09 12:48:31 +01:00
3f18fa56c2 add struct definitions as a constructor parameter 2020-03-09 12:48:31 +01:00
a9ab8f08e6 implement structs 2020-03-09 12:47:44 +01:00
bc5efde8c5 add the retrieved structs to the constructor call of the eval visitor 2020-03-09 12:47:44 +01:00
edaa686a2a add method to get the value as a struct 2020-03-09 12:47:44 +01:00
b9569c7df6 add missing semicolong since a destructor call is now a statement 2020-03-09 12:47:02 +01:00
86fe676492 rename method to match new grammar 2020-03-09 12:47:02 +01:00
64634a0d4d move destructor call from expressions to statements 2020-03-09 12:47:02 +01:00
3fb350ad31 make destructor call inherit from statement 2020-03-09 12:47:02 +01:00
d89c085ecc implement context analysis for destructor node 2020-03-09 12:47:02 +01:00
9300e37fca implement node visitors for the destructor node 2020-03-09 12:47:02 +01:00
995fac20c5 create node that represents a destructor call 2020-03-09 12:47:02 +01:00
31460860d5 add a destructor call to the grammar 2020-03-09 12:47:02 +01:00
441466c83f next time check before commiting everything... 2020-03-09 12:47:02 +01:00
80deae6971 implement visitors for null atom 2020-03-09 12:47:02 +01:00
2f425944e5 implement null node 2020-03-09 12:47:02 +01:00
8ebbd6ae54 implement null type 2020-03-09 12:47:02 +01:00
9d83e5425d add a null literal 2020-03-09 12:46:13 +01:00
5c0459c5a2 implement constructor call, eval and genasm are still stubs 2020-03-09 12:45:16 +01:00
317c2c52ca add constructor call expression to the grammar 2020-03-09 12:45:16 +01:00