- public static void newResult(Forest f, Node pred, Pos reduction, GSS.Phase target) {
- Result r = new Result(f, pred, reduction);
- if (reduction == null) return;
- Parser.Table.State state0 = (Parser.Table.State)pred.state().gotoSetNonTerminals.get(reduction);
- target.newNodeFromReduction(r, state0, reduction);
+ public void removePred(Node pred) {
+ if (!predecessors.contains(pred)) return;
+ predecessors.remove(pred);
+ check();
+ }
+
+ public void addPred(Node pred) {
+ if (predPhase==null) predPhase = pred.phase();
+ if (predPhase != pred.phase()) throw new Error();
+ predecessors.add(pred);
+ pred.addSucc(this);
+ if (predecessors.size() > 1) throw new Error();
+ }
+
+ public Result() {
+ this(null, null, null);
+ this.primordeal = true;