TODOs:
Semantics:
- functions with the same name as variables need to be allowed
Semantic choices
don't allow:
"float[] a[]" in function parameters
function overloading
function var args (ellipsis)
% and %= operators envolving floating point types (because C doesn't allow them)
- function overload
allow:
for (i= 0; i < n; i++)
int i;
==, !=, <, >, <= and >= on strings
redefinition of global variables (that would make them inaccessible)
TODO: LEX
Range validation on size (http://linux.die.net/man/3/strtoll ERANGE)