privateint sp; // number of nodes on stack privateint mk; // current mark privateboolean node_created;
public JJTELParserState() {
nodes = new java.util.ArrayList<Node>();
marks = new java.util.ArrayList<Integer>();
sp = 0;
mk = 0;
}
/* Determines whether the current node was actually closed and pushed.Thisshouldonlybecalledinthefinaluseractionofa
node scope. */ publicboolean nodeCreated() { return node_created;
}
/* Call this to reinitialize the node stack. It is called
automatically by the parser's ReInit() method. */ publicvoid 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 nodes.get(0);
}
/* Pushes a node on to the stack. */ publicvoid 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 = marks.remove(marks.size()-1);
} return nodes.remove(nodes.size()-1);
}
/* Returns the node currently on the top of the stack. */ public Node peekNode() { return nodes.get(nodes.size()-1);
}
/* Returns the number of children on the stack in the current node
scope. */ publicint nodeArity() { return sp - mk;
}
/* A definite node is constructed from a specified number of children.Thatnumberofnodesarepoppedfromthestackand madethechildrenofthedefinitenode.Thenthedefinitenode
is pushed on to the stack. */ publicvoid closeNodeScope(Node n, int num) {
mk = marks.remove(marks.size()-1); 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 thenodesthathavebeenpushedsincethenodewasopenedare madechildrenoftheconditionalnode,whichisthenpushed ontothestack.Iftheconditionisfalsethenodeisnot
constructed and they are left on the stack. */ publicvoid closeNodeScope(Node n, boolean condition) { if (condition) { int a = nodeArity();
mk = marks.remove(marks.size()-1); while (a-- > 0) {
Node c = popNode();
c.jjtSetParent(n);
n.jjtAddChild(c, a);
}
n.jjtClose();
pushNode(n);
node_created = true;
} else {
mk = marks.remove(marks.size()-1);
node_created = false;
}
}
} /* JavaCC - OriginalChecksum=5f71fbb7f7a6d37c4c91e15a8243ab32 (do not edit this line) */
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-10-03)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.