Jason Dere created HIVE-6264:
--------------------------------

             Summary: Unbalanced number of HiveParser msgs.push/msgs.pop calls 
when doing lookahead
                 Key: HIVE-6264
                 URL: https://issues.apache.org/jira/browse/HIVE-6264
             Project: Hive
          Issue Type: Bug
            Reporter: Jason Dere
            Assignee: Jason Dere


HiveParser pushes/pops messages describing the current parse rule like so:
{noformat}
joinSource
@init { gParent.msgs.push("join source"); }
@after { gParent.msgs.pop(); }
...
{noformat}

The ANTLR generated code for the init/after actions looks like this:

{noformat}
         gParent.msgs.push("join source"); 
...
            if ( state.backtracking==0 ) { gParent.msgs.pop(); }
{noformat}

If we have a parse rule that does some lookahead, the message is always pushed 
onto the message stack since the init action has no check of 
state.backtracking.  But that message is never popped because the after action 
does check state.backtracking. As a result there can be a bunch of parser 
context messages added to the stack which are never taken off.




--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to