Commit Graph
100 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
nitrix fd17a25f29 add section explaining structs 2020-03-09 23:18:46 +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
nitrix ac870460e6 use ubuntu, install maven 2020-03-09 22:03:01 +01:00
nitrix da56e1c05e try maven:latest as base image 2020-03-09 21:55:47 +01:00
nitrix ba17c7e2b6 fix typo 2020-03-09 21:50:06 +01:00
nitrix d6c0131d8f add test parser test, rename test to test compilation 2020-03-09 21:46:52 +01:00
nitrix d90581f0cd add new target testJava to execute the junit tests 2020-03-09 21:46:31 +01:00
nitrix 6714d2136d do not run tests when building the project 2020-03-09 21:43:26 +01:00
nitrix fe9c9b79b8 add test directory to settings 2020-03-09 21:40:45 +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 649e690ac4 add junit 2020-03-09 21:31:54 +01:00
nitrix 6d60dcc4a3 add option to surpress illegal relfective access warning 2020-03-09 21:31:45 +01:00
nitrix 35de3c7de4 implement test for tail call optimization 2020-03-09 17:10:50 +01:00
nitrix 5701d3e918 add TCO to readme, add floats 2020-03-09 16:13:44 +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
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
nitrix 2f425944e5 implement null node 2020-03-09 12:47:02 +01:00
nitrix 8ebbd6ae54 implement null type 2020-03-09 12:47:02 +01:00
nitrix 9d83e5425d add a null literal 2020-03-09 12:46:13 +01:00
nitrix 5c0459c5a2 implement constructor call, eval and genasm are still stubs 2020-03-09 12:45:16 +01:00
nitrix 317c2c52ca add constructor call expression to the grammar 2020-03-09 12:45:16 +01:00
nitrix 19daaa63af use GetStructNames instead of collecting the names in GetStructs 2020-03-09 12:45:16 +01:00
nitrix a79a2332a1 implement visitor to collect all struct names 2020-03-09 12:45:16 +01:00
nitrix f0b6f052d6 implement pretty print for struct field access expression 2020-03-09 12:45:16 +01:00
nitrix 1ca3f5ca8b implement context analysis for struct field access expressions 2020-03-09 12:45:16 +01:00
nitrix 6a7eb8fde2 make GetStructs collect the complete struct definitions 2020-03-09 12:45:16 +01:00
nitrix a969aa895f make GetStructs collect the complete struct definitions 2020-03-09 12:45:16 +01:00
nitrix fef397c60d implement empty visitors 2020-03-09 12:43:25 +01:00
nitrix e873e211c9 implement node for struct field access expression 2020-03-09 12:43:25 +01:00
nitrix 304891adb8 add struct field access expression 2020-03-09 12:43:25 +01:00
nitrix 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
nitrix 6981c288e6 implement context analysis 2020-03-09 12:43:25 +01:00
nitrix 33904a3c33 implement pretty print visitor 2020-03-09 12:41:52 +01:00
nitrix 279ea28a29 add empty stubs for the visit method of the new nodes 2020-03-09 12:41:52 +01:00
nitrix 15c55ed065 add the new nodes to the list of visitable nodes 2020-03-09 12:41:52 +01:00
nitrix 309fe39c01 implement get vars visitor 2020-03-09 12:41:52 +01:00
nitrix fd7f7c39bb implement a visitor that collects the names of all structs that were defined 2020-03-09 12:41:52 +01:00
nitrix b5086b44f0 return a struct type if no primitive type with the given name was found 2020-03-09 12:41:52 +01:00
nitrix e971b8b91e create a new type class that represents the type of a struct 2020-03-09 12:40:59 +01:00
nitrix 6f8c995f19 create DAST nodes for structDefinition and structField 2020-03-09 12:40:59 +01:00
nitrix 3e8e30e0da add struct definitions as a direct child of program 2020-03-09 12:40:59 +01:00
nitrix 333475f27b implement integer division tests 2020-03-05 17:21:08 +01:00
nitrix a8b093a005 reenable the mod test for -1, -1 2020-03-05 17:13:36 +01:00
nitrix 1530dc6c55 sign extend rax into rbx before calling idiv, the replaces the rbx zeroing 2020-03-05 17:13:19 +01:00
nitrix 09eec634b1 add new mixdiv test for -1, -1 2020-03-05 16:50:37 +01:00
nitrix 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
nitrix ebeabfe930 fix input values to match expected value 2020-03-05 16:39:47 +01:00
nitrix 18cfbdcbb5 implement function call tests for floats and floats mixed with integers 2020-03-04 20:46:49 +01:00
nitrix 384d98418d implement math tests for floats 2020-03-04 20:46:08 +01:00
nitrix a9db8b3f9a set the initialited field of class VariableDeclaration, make sure a variable has been inizialized prior to its usage 2020-02-04 12:02:41 +01:00
nitrix 1bb53a0bcf add field 'initialized' to class VariableDeclaration 2020-02-04 12:02:15 +01:00
nitrix 1e2dee3f1d add a section that showcases the static type system 2020-02-04 11:35:00 +01:00
nitrix 1ae404b978 always add the declared type as the type of a variable declaration. do not use the combined type as the type of the variable that is declared 2020-02-04 11:21:48 +01:00
nitrix d3a4af0b8c add lexer rules for line and block comments 2020-02-04 11:02:34 +01:00
nitrix 47390f6757 add missing type declarations to pretty print output 2020-02-04 00:16:14 +01:00
nitrix e978b4d52c remove unused import 2020-02-04 00:07:56 +01:00
nitrix 26b1406013 make boolean and comparison expression evaluate to bool, user asBoolean when expecting a boolean, re-welcome the conditions of loops everytime another step has to be evaluated 2020-02-04 00:07:22 +01:00
nitrix 56463c3e30 the the result of eval as an object and call toString\(\) on it 2020-02-03 23:53:25 +01:00