[antlr-interest] Declaring exceptions in rules

Gavin Lambert antlr at mirality.co.nz
Tue Apr 21 05:04:48 PDT 2009


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.)



More information about the antlr-interest mailing list