Commit Graph

146 Commits

Author SHA1 Message Date
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
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
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
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
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
5c0459c5a2 implement constructor call, eval and genasm are still stubs 2020-03-09 12:45:16 +01:00
19daaa63af use GetStructNames instead of collecting the names in GetStructs 2020-03-09 12:45:16 +01:00
a79a2332a1 implement visitor to collect all struct names 2020-03-09 12:45:16 +01:00
f0b6f052d6 implement pretty print for struct field access expression 2020-03-09 12:45:16 +01:00
1ca3f5ca8b implement context analysis for struct field access expressions 2020-03-09 12:45:16 +01:00
6a7eb8fde2 make GetStructs collect the complete struct definitions 2020-03-09 12:45:16 +01:00
a969aa895f make GetStructs collect the complete struct definitions 2020-03-09 12:45:16 +01:00
fef397c60d implement empty visitors 2020-03-09 12:43:25 +01:00
e873e211c9 implement node for struct field access expression 2020-03-09 12:43:25 +01:00
233894fbcf remove NYI errors, check if a struct is defined if the declared type is not primitive 2020-03-09 12:43:25 +01:00
6981c288e6 implement context analysis 2020-03-09 12:43:25 +01:00
33904a3c33 implement pretty print visitor 2020-03-09 12:41:52 +01:00
279ea28a29 add empty stubs for the visit method of the new nodes 2020-03-09 12:41:52 +01:00
15c55ed065 add the new nodes to the list of visitable nodes 2020-03-09 12:41:52 +01:00
309fe39c01 implement get vars visitor 2020-03-09 12:41:52 +01:00
fd7f7c39bb implement a visitor that collects the names of all structs that were defined 2020-03-09 12:41:52 +01:00
b5086b44f0 return a struct type if no primitive type with the given name was found 2020-03-09 12:41:52 +01:00
e971b8b91e create a new type class that represents the type of a struct 2020-03-09 12:40:59 +01:00
6f8c995f19 create DAST nodes for structDefinition and structField 2020-03-09 12:40:59 +01:00
1530dc6c55 sign extend rax into rbx before calling idiv, the replaces the rbx zeroing 2020-03-05 17:13:19 +01:00
150e18e05b inspec type of expression instead of the type of the assignment, since the assignment type is always null 2020-03-05 16:40:31 +01:00
Marvin Kaiser
bba950c851 25: Fix tests 2020-03-05 12:31:09 +01:00