- types
- int
- float
- char
- bool
- string*
- arrays - applies for every type
- recursion
- optimizations
- dead code removal
- useless code removal
- algebraic unrolling
- constant spreading
- loop unrolling
- pure function detection for optimization
- while loop
- for loop
- if else statement
- break statements
- return statements
- variables
- type errors
- syntax errors
- auto casting float and ints