- state.invokeReductions(phase().getToken(), this, false, null);
+ state.invokeReductions(phase().getToken(), this, pred);
+
+ state.invokeEpsilonReductions(phase().token, this);
+ }
+
+ // Add/Remove Successors/Results //////////////////////////////////////////////////////////////////////////////
+
+ public void removeSucc(Result succ) {
+ successors.remove(succ);
+ check();
+ }
+ public void removeResult(Result result) {
+ results.remove(result);
+ check();
+ }
+ public void addSucc(Result succ) {
+ successors.add(succ);
+ }
+ public void addResult(Forest f, Pos reduction, Node pred) {
+ for(Result r : results)
+ if (r.predecessorsContains(pred)) {
+ r.merge(f);
+ return;
+ }
+ Result result = new Result(f, reduction, pred);
+ results.add(result);
+ result.addSucc(this);
+ if (!this.fromEmptyReduction) state.invokeReductions(phase().getToken(), this, result);