Currently, the parser is very context-sensitive. This means various errors will appear as parsing errors. For instance, a(1) results in
Syntax error detected: Unexpected "T_BRACE" at character 2.
even though it is intuitively "parsable", and could give a better error message, saying that the function a doesn't exist.
Therefore, the parser should be more lenient and defers various checks to later phases (at compile-time)