Commit Graph

203 Commits

Author SHA1 Message Date
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
nitrix 3f18fa56c2 add struct definitions as a constructor parameter 2020-03-09 12:48:31 +01:00
nitrix a9ab8f08e6 implement structs 2020-03-09 12:47:44 +01:00
nitrix bc5efde8c5 add the retrieved structs to the constructor call of the eval visitor 2020-03-09 12:47:44 +01:00
nitrix edaa686a2a add method to get the value as a struct 2020-03-09 12:47:44 +01:00
nitrix b9569c7df6 add missing semicolong since a destructor call is now a statement 2020-03-09 12:47:02 +01:00
nitrix 86fe676492 rename method to match new grammar 2020-03-09 12:47:02 +01:00
nitrix 64634a0d4d move destructor call from expressions to statements 2020-03-09 12:47:02 +01:00
nitrix 3fb350ad31 make destructor call inherit from statement 2020-03-09 12:47:02 +01:00
nitrix d89c085ecc implement context analysis for destructor node 2020-03-09 12:47:02 +01:00
nitrix 9300e37fca implement node visitors for the destructor node 2020-03-09 12:47:02 +01:00
nitrix 995fac20c5 create node that represents a destructor call 2020-03-09 12:47:02 +01:00
nitrix 31460860d5 add a destructor call to the grammar 2020-03-09 12:47:02 +01:00
nitrix 441466c83f next time check before commiting everything... 2020-03-09 12:47:02 +01:00
nitrix 80deae6971 implement visitors for null atom 2020-03-09 12:47:02 +01:00