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

Martin Probst mail at martin-probst.com
Sun May 18 12:09:41 PDT 2008


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