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 {
}
old.push(current_expression.expression);
current_expression = old;
- }
-
+ }
+
public void visit(AssignmentOperator n) {
operator = true;
super.visit(n);
operator = false;
}
+
+ public void visit(AssignmentExpression n)
+ {
+ if (0 == n.f0.which)
+ {
+ NodeSequence ns = (NodeSequence) n.f0.choice;
+ UnaryExpression u = (UnaryExpression) ns.elementAt(0);
+ AssignmentOperator ao = (AssignmentOperator) ns.elementAt(1);
+ AssignmentExpression ae = (AssignmentExpression) ns.elementAt(2);
+ LineNumberInfo lin = LineNumberInfo.get(n);
+
+ ExpressionBuilder old = current_expression;
+ current_expression = new ExpressionBuilder();
+ u.accept(this);
+ current_expression.commit(lin.lineEnd);
+ ao.accept (this);
+ old.push(current_expression.expression);
+ current_expression = new ExpressionBuilder();
+ ae.accept(this);
+ current_expression.commit(lin.lineEnd);
+ old.push(current_expression.expression);
+ current_expression = old;
+ }
+ else
+ {
+ n.f0.choice.accept (this);
+ }
+ }
public void visit(ConditionalExpression n) {
ExpressionBuilder old = current_expression;
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;
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;
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;
current_expression = new ExpressionBuilder();
n.f0.accept(this);
if (n.f1.present()) {
+ LineNumberInfo lin = LineNumberInfo.get(n);
+ current_expression.commit(lin.lineEnd);
operator = true;
NodeSequence ns = (NodeSequence) n.f1.node;
ns.nodes.get(0).accept(this);
operator = false;
+ old.push(current_expression.expression);
+ current_expression = new ExpressionBuilder();
ns.nodes.get(1).accept(this);
+ current_expression.commit(lin.lineEnd);
}
old.push(current_expression.expression);
current_expression = old;
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;
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;
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;
NodeSequence ns = (NodeSequence) nc.choice;
ns.elementAt(1).accept(this);
LineNumberInfo lin = LineNumberInfo.get(n);
- current_expression.commit(lin.colEnd);
+ current_expression.commit(lin.lineEnd);
old.push("[");
old.push(current_expression.expression);
old.push("]");
current_expression = new ExpressionBuilder();
NodeSequence ns = (NodeSequence) nc.choice;
ns.elementAt(1).accept(this);
+ LineNumberInfo lin = LineNumberInfo.get (ns.elementAt(1));
+ current_expression.commit(lin.lineEnd);
old.push("(");
old.push(current_expression.expression);
old.push(")");
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(")");