[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Compiler error handling



Will Hartung wrote:
> How are folks handling errors during the compile phase?
> I have the system walking the tree and generating code. But when I encounter
> an error, I can't throw an exception (as outXXX doesn't allow it).

How about throwing a RuntimeException derived exception? You can catch
it and change it in a checked exception out of the tree walking code.

e.g.

...
try
{
  walk_tree(ast); // or whatever
}
catch(CompileRuntimeException e)
{
  throw new CompileException(e);
}
...

There's no nice solution to this problem.  Either we impose an exception
on all out/in/... methods, or we use unchecked exceptions.

>...
> It's working fine, I'm just curious if this is "the way it's done" or am I
> missing something. In the Thesis, there was a section where Etienne talked
> about having a bunch of nested AnalysisAdapter anonymous classes. I admit
> that it wasn't particularly clear what he was doing here to me.

Look in the mailing-list archive for discussion and example of AST
modification/simplification.

Good luck!

Etienne
-- 
----------------------------------------------------------------------
Etienne M. Gagnon, M.Sc.                     e-mail: egagnon@j-meg.com
Author of SableCC:                             http://www.sablecc.org/
and SableVM:                                   http://www.sablevm.org/