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 |
|
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 |
|