Hi Bill,

My first thought would be to cheat, and make the errorReporter field
in your subclass static.

Michael


On 2 February 2011 11:03, Bill Andersen <[email protected]> wrote:
> Folks
>
> I have a grammar A that imports B.  One thing I'd like to do is to provide a 
> mechanism for non-default error reporting in A and B and I do this in the way 
> described here
>
>        http://www.antlr.org/wiki/display/ANTLR3/Error+reporting+and+recovery
>
> Thing is, I have to plug this code
>
>  private ErrorReporter errorReporter = null;
>
>  public void setErrorReporter(ErrorReporter errorReporter) {
>    this.errorReporter = errorReporter;
>    <delegate>.setErrorReporter(errorReporter);
>  }
>
>  // Overrides parser/lexer emitErrorMsg
>  public void emitErrorMessage(String msg) {
>    if (errorReporter == null) {
>      super.emitErrorMessage(msg);
>    } else {
>      errorReporter.reportError(msg);
>    }
>  }
>
> into all the grammars where I want this functionality, including the imported 
> grammars.
>
> What I'd like to do is to define subclasses of Parser and TreeParser that 
> include this behavior already.  I need a way for the method 
> setErrorReporter() in A to also work on B.  Where I have <delegate> above is 
> where I do this.
>
> The issue is that, if I provide these methods in defined subclasses of Parser 
> and TreeParser, there seems to be no way in that code that  can get to the 
> delegates without knowing their names.  What I'd like for setErrorReporter() 
> is something like this (call my defined Parser subclass MyParser):
>
>  public void setErrorReporter(ErrorReporter errorReporter) {
>    this.errorReporter = errorReporter;
>    for (MyParser delegate : getDelegates()) {
>      delegate.setErrorReporter(errorReporter);
>    }
>  }
>
> First, is there any way to do what I'm trying to do here?  Second, if there's 
> not, is there a good workaround (I have a feeling that I might have to change 
> ANTLR's processing of imports to generate that getDelegates() method)?
>
> Any help appreciated
>
>  .bill
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: 
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>

List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to