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.
