/* Generated By:JavaCC: Do not edit this line. JJTthrift_grammarState.java Version 4.1 */ package org.apache.hadoop.hive.serde2.dynamic_type; public class JJTthrift_grammarState { private final java.util.List nodes; private final java.util.List marks; private int sp; // number of nodes on stack private int mk; // current mark private boolean node_created; public JJTthrift_grammarState() { nodes = new java.util.ArrayList(); marks = new java.util.ArrayList(); sp = 0; mk = 0; } /* * Determines whether the current node was actually closed and pushed. This * should only be called in the final user action of a node scope. */ public boolean nodeCreated() { return node_created; } /* * Call this to reinitialize the node stack. It is called automatically by the * parser's ReInit() method. */ public void reset() { nodes.clear(); marks.clear(); sp = 0; mk = 0; } /* * Returns the root node of the AST. It only makes sense to call this after a * successful parse. */ public Node rootNode() { return (Node) nodes.get(0); } /* Pushes a node on to the stack. */ public void pushNode(Node n) { nodes.add(n); ++sp; } /* * Returns the node on the top of the stack, and remove it from the stack. */ public Node popNode() { if (--sp < mk) { mk = ((Integer) marks.remove(marks.size() - 1)).intValue(); } return (Node) nodes.remove(nodes.size() - 1); } /* Returns the node currently on the top of the stack. */ public Node peekNode() { return (Node) nodes.get(nodes.size() - 1); } /* * Returns the number of children on the stack in the current node scope. */ public int nodeArity() { return sp - mk; } public void clearNodeScope(Node n) { while (sp > mk) { popNode(); } mk = ((Integer) marks.remove(marks.size() - 1)).intValue(); } public void openNodeScope(Node n) { marks.add(new Integer(mk)); mk = sp; n.jjtOpen(); } /* * A definite node is constructed from a specified number of children. That * number of nodes are popped from the stack and made the children of the * definite node. Then the definite node is pushed on to the stack. */ public void closeNodeScope(Node n, int num) { mk = ((Integer) marks.remove(marks.size() - 1)).intValue(); while (num-- > 0) { Node c = popNode(); c.jjtSetParent(n); n.jjtAddChild(c, num); } n.jjtClose(); pushNode(n); node_created = true; } /* * A conditional node is constructed if its condition is true. All the nodes * that have been pushed since the node was opened are made children of the * conditional node, which is then pushed on to the stack. If the condition is * false the node is not constructed and they are left on the stack. */ public void closeNodeScope(Node n, boolean condition) { if (condition) { int a = nodeArity(); mk = ((Integer) marks.remove(marks.size() - 1)).intValue(); while (a-- > 0) { Node c = popNode(); c.jjtSetParent(n); n.jjtAddChild(c, a); } n.jjtClose(); pushNode(n); node_created = true; } else { mk = ((Integer) marks.remove(marks.size() - 1)).intValue(); node_created = false; } } } /* * JavaCC - OriginalChecksum=67039445e12d18e18e63124a33879cd3 (do not edit this * line) */