Commit Graph
100 Commits
Author SHA1 Message Date
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
nitrix fc33ab6b12 add method to get the raw value representation 2020-02-03 23:52:21 +01:00
nitrix f3c5bac860 check whether the types of the operants of an equality expression can combine instead of enforcing them to both be integers 2020-02-03 23:45:52 +01:00
nitrix e8f80eb2f9 make file pretty 2020-02-03 22:59:17 +01:00
nitrix 018ce8712a add error message prefix to type missmatch errors, staticly assign bool type to boolean expressions 2020-02-03 22:56:40 +01:00
nitrix 6f0a3754bd check whether the body of a function guarantees a return value and throw an exception if not 2020-02-03 22:36:24 +01:00
nitrix 7c56f401ac add error prefix to the runtime exception message 2020-02-03 22:28:37 +01:00
nitrix 02fb7b7cc2 unify error message appearance 2020-02-03 22:28:21 +01:00
nitrix 3a89ab2231 remove error handling, since these kinds of errors are caught by our context analysis 2020-02-03 22:24:27 +01:00
nitrix 3e8a904cb8 catch error to abort further processing 2020-02-03 22:21:30 +01:00
nitrix cb0d63a71c save the line and column of the corresponding token, generate an error prefix for every thrown error 2020-02-03 22:20:59 +01:00
nitrix 12c1f75602 add fields to save the line and column in which the token corresponding to the node was found 2020-02-03 22:20:25 +01:00
nitrix 33cbae0eeb implement method to generate an error prefix that mentions the line and column the error occured in 2020-02-03 22:19:36 +01:00
nitrix 3fb30ebd7e print statement never has a type 2020-01-27 17:02:21 +01:00
nitrix fa8904e0f5 fix type annotation for comparison expressions 2020-01-27 16:57:09 +01:00
nitrix 0aed4ee893 my initial short for typechecking, still very unifinished tho 2020-01-21 00:21:54 +01:00
nitrix e5baad62e6 implement tests 2020-01-20 19:33:07 +01:00
nitrix 295bcaec8a implement visitors for boolean expressions 2020-01-20 19:32:50 +01:00
nitrix 722a9babcb remove unused import 2020-01-20 19:32:16 +01:00