[antlr-interest] ParseTreeBuilder broken in decisions (with fix)

Terence Parr parrt at cs.usfca.edu
Tue May 20 09:59:09 PDT 2008


thanks,Martin, adding bug

http://www.antlr.org:8888/browse/ANTLR-267

Ter
On May 18, 2008, at 12:09 PM, Martin Probst wrote:

> Hi all,
>
> the ParseTreeBuilder included in ANTLR 3 does not respect decision  
> contexts - if the parser enters decision mode during parsing  
> multiple times, this breaks the parse tree construction.
>
> The fix is to keep track of the decision nesting depth (methods from  
> my extension of the base class):
>
>  @Override
>  public void consumeToken(Token token) {
>    if (inDecision == 0) super.consumeToken(token);
>  }
>
>  private int inDecision = 0;
>
>  @Override
>  public void enterDecision(int decisionNumber) {
>    super.enterDecision(decisionNumber);
>    inDecision++;
>  }
>
>  @Override
>  public void exitDecision(int decisionNumber) {
>    super.exitDecision(decisionNumber);
>    inDecision--;
>  }
>
> Best regards,
> Martin



More information about the antlr-interest mailing list