fixes
[oweals/gnunet.git] / src / monkey / seaspider / org / gnunet / seaspider / ExpressionExtractorVisitor.java
index def981ea35ef8e8771a93be89595c0973007cdc4..b93b19d3d7b43fcc8c6bf9e834766958fb06bafa 100644 (file)
@@ -118,11 +118,13 @@ public class ExpressionExtractorVisitor extends DepthFirstVisitor {
                        ExpressionBuilder old = current_expression;
                        current_expression = new ExpressionBuilder();
                        n.f0.accept(this);
+                       LineNumberInfo lin = LineNumberInfo.get(n);
                        if (old != null) {
                                old.push(current_expression.expression);
-                               LineNumberInfo lin = LineNumberInfo.get(n);
                                old.commit(lin.lineEnd);
-                       }
+                       } else {
+                               current_expression.commit(lin.lineEnd);
+                       }                       
                        current_expression = old;
                        skip_mode = old_mode;
                } else {
@@ -409,11 +411,19 @@ public class ExpressionExtractorVisitor extends DepthFirstVisitor {
                current_expression = new ExpressionBuilder();
                n.f0.accept(this);
                if (n.f1.present()) {
+                       LineNumberInfo lin = LineNumberInfo.get(n.f0);
+                       current_expression.commit(lin.lineEnd);
                        operator = true;
                        NodeSequence ns = (NodeSequence) n.f1.node;
                        ns.nodes.get(0).accept(this);
                        operator = false;
+                       ExpressionBuilder tmp = current_expression;
+                       current_expression = new ExpressionBuilder();                           
                        ns.nodes.get(1).accept(this);
+                       lin = LineNumberInfo.get(ns.nodes.get(1));
+                       current_expression.commit(lin.lineEnd);
+                       tmp.push (current_expression.expression);
+                       current_expression = tmp;
                }
                old.push(current_expression.expression);
                current_expression = old;
@@ -425,11 +435,19 @@ public class ExpressionExtractorVisitor extends DepthFirstVisitor {
                current_expression = new ExpressionBuilder();
                n.f0.accept(this);
                if (n.f1.present()) {
+                       LineNumberInfo lin = LineNumberInfo.get(n.f0);
+                       current_expression.commit(lin.lineEnd);
                        operator = true;
                        NodeSequence ns = (NodeSequence) n.f1.node;
                        ns.nodes.get(0).accept(this);
                        operator = false;
+                       ExpressionBuilder tmp = current_expression;
+                       current_expression = new ExpressionBuilder();                           
                        ns.nodes.get(1).accept(this);
+                       lin = LineNumberInfo.get(ns.nodes.get(1));
+                       current_expression.commit(lin.lineEnd);
+                       tmp.push (current_expression.expression);
+                       current_expression = tmp;
                }
                old.push(current_expression.expression);
                current_expression = old;
@@ -441,11 +459,19 @@ public class ExpressionExtractorVisitor extends DepthFirstVisitor {
                current_expression = new ExpressionBuilder();
                n.f0.accept(this);
                if (n.f1.present()) {
+                       LineNumberInfo lin = LineNumberInfo.get(n.f0);
+                       current_expression.commit(lin.lineEnd);
                        operator = true;
                        NodeSequence ns = (NodeSequence) n.f1.node;
                        ns.nodes.get(0).accept(this);
                        operator = false;
+                       ExpressionBuilder tmp = current_expression;
+                       current_expression = new ExpressionBuilder();                           
                        ns.nodes.get(1).accept(this);
+                       lin = LineNumberInfo.get(ns.nodes.get(1));
+                       current_expression.commit(lin.lineEnd);
+                       tmp.push (current_expression.expression);
+                       current_expression = tmp;
                }
                old.push(current_expression.expression);
                current_expression = old;
@@ -501,11 +527,19 @@ public class ExpressionExtractorVisitor extends DepthFirstVisitor {
                current_expression = new ExpressionBuilder();
                n.f0.accept(this);
                if (n.f1.present()) {
+                       LineNumberInfo lin = LineNumberInfo.get(n.f0);
+                       current_expression.commit(lin.lineEnd);
                        operator = true;
                        NodeSequence ns = (NodeSequence) n.f1.node;
                        ns.nodes.get(0).accept(this);
                        operator = false;
+                       ExpressionBuilder tmp = current_expression;
+                       current_expression = new ExpressionBuilder();                           
                        ns.nodes.get(1).accept(this);
+                       lin = LineNumberInfo.get(ns.nodes.get(1));
+                       current_expression.commit(lin.lineEnd);
+                       tmp.push (current_expression.expression);
+                       current_expression = tmp;
                }
                old.push(current_expression.expression);
                current_expression = old;
@@ -517,11 +551,19 @@ public class ExpressionExtractorVisitor extends DepthFirstVisitor {
                current_expression = new ExpressionBuilder();
                n.f0.accept(this);
                if (n.f1.present()) {
+                       LineNumberInfo lin = LineNumberInfo.get(n.f0);
+                       current_expression.commit(lin.lineEnd);
                        operator = true;
                        NodeSequence ns = (NodeSequence) n.f1.node;
                        ns.nodes.get(0).accept(this);
                        operator = false;
+                       ExpressionBuilder tmp = current_expression;
+                       current_expression = new ExpressionBuilder();                           
                        ns.nodes.get(1).accept(this);
+                       lin = LineNumberInfo.get(ns.nodes.get(1));
+                       current_expression.commit(lin.lineEnd);
+                       tmp.push (current_expression.expression);
+                       current_expression = tmp;
                }
                old.push(current_expression.expression);
                current_expression = old;
@@ -533,11 +575,19 @@ public class ExpressionExtractorVisitor extends DepthFirstVisitor {
                current_expression = new ExpressionBuilder();
                n.f0.accept(this);
                if (n.f1.present()) {
+                       LineNumberInfo lin = LineNumberInfo.get(n.f0);
+                       current_expression.commit(lin.lineEnd);
                        operator = true;
                        NodeSequence ns = (NodeSequence) n.f1.node;
                        ns.nodes.get(0).accept(this);
                        operator = false;
+                       ExpressionBuilder tmp = current_expression;
+                       current_expression = new ExpressionBuilder();                           
                        ns.nodes.get(1).accept(this);
+                       lin = LineNumberInfo.get(ns.nodes.get(1));
+                       current_expression.commit(lin.lineEnd);
+                       tmp.push (current_expression.expression);
+                       current_expression = tmp;
                }
                old.push(current_expression.expression);
                current_expression = old;
@@ -632,6 +682,8 @@ public class ExpressionExtractorVisitor extends DepthFirstVisitor {
                        current_expression = new ExpressionBuilder();
                        NodeSequence ns = (NodeSequence) n.f0.choice;
                        ns.elementAt(1).accept(this);
+                       LineNumberInfo lin1 = LineNumberInfo.get (ns.elementAt(1));
+                       current_expression.commit(lin1.lineEnd);
                        old.push("(");
                        old.push(current_expression.expression);
                        old.push(")");