[antlr-interest] Declaring exceptions in rules
Jim Idle
jimi at temporal-wave.com
Tue Apr 21 07:12:39 PDT 2009
Gavin Lambert wrote:
> At 17:08 21/04/2009, Christof Lutteroth wrote:
> >I am trying to get ANTRL 3.1.3 to generate a method that
> declares
> >an exception.
> >For example, I want rule compilationUnit (from the Java grammar
> in
> >the grammars section of the ANTLR website) to throw an
> Exception:
> >
> >compilationUnit throws Exception
> > : ( (annotations)?
> > packageDecl=packageDeclaration
> > )?
> > (importDeclaration)*
> > (typeDeclaration)*
> > ;
> >
> >So now I would expect that the compilationUnit() method that is
> >generated would declare "throws Exception", but:
> >
> > public final void compilationUnit() throws
> >RecognitionException {
> >
> >Why is the Exception declaration not generated?
>
> Because while that's accepted by the ANTLR grammar structure, it's
> a feature that isn't currently implemented. (There are a few more
> things like that.)
>
> For now, you'll need to throw a RuntimeError-derived class
> instead. (Since IIRC you don't need to declare those.)
>
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>
Another way is:
cu: X Y Z ;
catch [RecognitionException re] {
// my code
throw new MyException(re);
}
Which you can use to intercept the standard recognition error and do
something special or throw a different exception for a particular rule.
Jim
More information about the antlr-interest
mailing list