`statement` has been divided into two functions to prevent illegal code from being accepted in the global scope.
Functions are now allowed to call themselves.
Arithmetic unary operators can now be used in array size declarations.