private Forest forest;
- public Phase(Phase prev, Parser parser, Phase previous, Tok token, Input.Location location, Forest forest) {
+ public Phase(Phase prev, Parser parser, Phase previous, Tok token, Input.Location location, Forest forest) throws ParseFailed {
this.prev = prev;
this.forest = forest;
this.parser = parser;
reset();
}
- public void reset() {
+ public void reset() throws ParseFailed {
waiting.clear();
performed.clear();
hash = new IntPairMap<Phase.Node>();
}
/** perform all reduction operations */
- public void reduce() {
+ public void reduce() throws ParseFailed{
try {
reducing = true;
if (reducing_list==null || reducing_list.length < hash.size())
else state.invokeReductions(token, this, this, n2);
}
+ public void performEmptyReductions() { state.invokeReductions(token, this, null, null); }
public final void invoke(Position r, Node n, Node n2) {
if (n==null || n2==null || r.pos==0) {
if (r.pos==0) {
target.newNode(this, result, state0, r.pos<=0, r);
}
- public void performEmptyReductions() { state.invokeReductions(token, this, null, null); }
-
private Node(Node parent, Forest pending, State state) {
this.state = state;
this.holder().merge(pending);