The FE has several repeated blocks of code to set up the lexer and parser, to parse, and to handle errors.
Move this code into a static function that can be used in place of the copies.
At the same time, provide a specific ParseException to replace the generic Exception thrown by the parser to allow easier error handling.
Some of the uses of the parser assume the return value is Object, others that the value is ParseNode and still others that it is StatementBase. Since the actual return is StatementBase, declare that as the return value of the new static method to clearly state the actual output.