}
break;
case 27:
// line 401 "DefaultRubyParser.y"
{
yyVal = new OpAsgnNode(getPosition(((Node)yyVals[-4+yyTop])), ((Node)yyVals[-4+yyTop]), ((Node)yyVals[0+yyTop]), (String) ((Token)yyVals[-2+yyTop]).getValue(), (String) ((Token)yyVals[-1+yyTop]).getValue());
}
break;
case 28:
// line 404 "DefaultRubyParser.y"
{
yyVal = new OpAsgnNode(getPosition(((Node)yyVals[-4+yyTop])), ((Node)yyVals[-4+yyTop]), ((Node)yyVals[0+yyTop]), (String) ((Token)yyVals[-2+yyTop]).getValue(), (String) ((Token)yyVals[-1+yyTop]).getValue());
}
break;
case 29:
// line 407 "DefaultRubyParser.y"
{
yyVal = new OpAsgnNode(getPosition(((Node)yyVals[-4+yyTop])), ((Node)yyVals[-4+yyTop]), ((Node)yyVals[0+yyTop]), (String) ((Token)yyVals[-2+yyTop]).getValue(), (String) ((Token)yyVals[-1+yyTop]).getValue());
}
break;
case 30:
// line 410 "DefaultRubyParser.y"
{
support.backrefAssignError(((Node)yyVals[-2+yyTop]));
}
break;
case 31:
// line 413 "DefaultRubyParser.y"
{
yyVal = support.node_assign(((Node)yyVals[-2+yyTop]), new SValueNode(getPosition(((Node)yyVals[-2+yyTop])), ((Node)yyVals[0+yyTop])));
}
break;
case 32:
// line 416 "DefaultRubyParser.y"
{
if (((MultipleAsgnNode)yyVals[-2+yyTop]).getHeadNode() != null) {
((MultipleAsgnNode)yyVals[-2+yyTop]).setValueNode(new ToAryNode(getPosition(((MultipleAsgnNode)yyVals[-2+yyTop])), ((Node)yyVals[0+yyTop])));
} else {
((MultipleAsgnNode)yyVals[-2+yyTop]).setValueNode(support.newArrayNode(getPosition(((MultipleAsgnNode)yyVals[-2+yyTop])), ((Node)yyVals[0+yyTop])));
}
yyVal = ((MultipleAsgnNode)yyVals[-2+yyTop]);
}
break;
case 33:
// line 424 "DefaultRubyParser.y"
{
((AssignableNode)yyVals[-2+yyTop]).setValueNode(((Node)yyVals[0+yyTop]));
yyVal = ((MultipleAsgnNode)yyVals[-2+yyTop]);
((MultipleAsgnNode)yyVals[-2+yyTop]).setPosition(support.union(((MultipleAsgnNode)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop])));
}
break;
case 36:
// line 433 "DefaultRubyParser.y"
{
yyVal = support.newAndNode(getPosition(((Token)yyVals[-1+yyTop])), ((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]));
}
break;
case 37:
// line 436 "DefaultRubyParser.y"
{
yyVal = support.newOrNode(getPosition(((Token)yyVals[-1+yyTop])), ((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]));
}
break;
case 38:
// line 439 "DefaultRubyParser.y"
{
yyVal = new NotNode(support.union(((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop])), support.getConditionNode(((Node)yyVals[0+yyTop])));
}
break;
case 39:
// line 442 "DefaultRubyParser.y"
{
yyVal = new NotNode(support.union(((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop])), support.getConditionNode(((Node)yyVals[0+yyTop])));
}
break;
case 41:
// line 447 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[0+yyTop]));
}
break;
case 44:
// line 454 "DefaultRubyParser.y"
{
yyVal = new ReturnNode(support.union(((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop])), support.ret_args(((Node)yyVals[0+yyTop]), getPosition(((Token)yyVals[-1+yyTop]))));
}
break;
case 45:
// line 457 "DefaultRubyParser.y"
{
yyVal = new BreakNode(support.union(((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop])), support.ret_args(((Node)yyVals[0+yyTop]), getPosition(((Token)yyVals[-1+yyTop]))));
}
break;
case 46:
// line 460 "DefaultRubyParser.y"
{
yyVal = new NextNode(support.union(((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop])), support.ret_args(((Node)yyVals[0+yyTop]), getPosition(((Token)yyVals[-1+yyTop]))));
}
break;
case 48:
// line 466 "DefaultRubyParser.y"
{
yyVal = support.new_call(((Node)yyVals[-3+yyTop]), ((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop]), null);
}
break;
case 49:
// line 469 "DefaultRubyParser.y"
{
yyVal = support.new_call(((Node)yyVals[-3+yyTop]), ((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop]), null);
}
break;
case 50:
// line 474 "DefaultRubyParser.y"
{
support.pushBlockScope();
}
break;
case 51:
// line 476 "DefaultRubyParser.y"
{
yyVal = new IterNode(getPosition(((Token)yyVals[-4+yyTop])), ((Node)yyVals[-2+yyTop]), support.getCurrentScope(), ((Node)yyVals[-1+yyTop]));
support.popCurrentScope();
}
break;
case 52:
// line 482 "DefaultRubyParser.y"
{
yyVal = support.new_fcall(((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop]), null);
}
break;
case 53:
// line 485 "DefaultRubyParser.y"
{
yyVal = support.new_fcall(((Token)yyVals[-2+yyTop]), ((Node)yyVals[-1+yyTop]), ((IterNode)yyVals[0+yyTop]));
}
break;
case 54:
// line 488 "DefaultRubyParser.y"
{
yyVal = support.new_call(((Node)yyVals[-3+yyTop]), ((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop]), null);
}
break;
case 55:
// line 491 "DefaultRubyParser.y"
{
yyVal = support.new_call(((Node)yyVals[-4+yyTop]), ((Token)yyVals[-2+yyTop]), ((Node)yyVals[-1+yyTop]), ((IterNode)yyVals[0+yyTop]));
}
break;
case 56:
// line 494 "DefaultRubyParser.y"
{
yyVal = support.new_call(((Node)yyVals[-3+yyTop]), ((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop]), null);
}
break;
case 57:
// line 497 "DefaultRubyParser.y"
{
yyVal = support.new_call(((Node)yyVals[-4+yyTop]), ((Token)yyVals[-2+yyTop]), ((Node)yyVals[-1+yyTop]), ((IterNode)yyVals[0+yyTop]));
}
break;
case 58:
// line 500 "DefaultRubyParser.y"
{
yyVal = support.new_super(((Node)yyVals[0+yyTop]), ((Token)yyVals[-1+yyTop])); /* .setPosFrom($2);*/
}
break;
case 59:
// line 503 "DefaultRubyParser.y"
{
yyVal = support.new_yield(support.union(((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop])), ((Node)yyVals[0+yyTop]));
}
break;
case 61:
// line 509 "DefaultRubyParser.y"
{
yyVal = ((MultipleAsgnNode)yyVals[-1+yyTop]);
}
break;
case 63:
// line 515 "DefaultRubyParser.y"
{
yyVal = new MultipleAsgnNode(getPosition(((Token)yyVals[-2+yyTop])), support.newArrayNode(getPosition(((Token)yyVals[-2+yyTop])), ((MultipleAsgnNode)yyVals[-1+yyTop])), null);
}
break;
case 64:
// line 520 "DefaultRubyParser.y"
{
yyVal = new MultipleAsgnNode(getPosition(((ListNode)yyVals[0+yyTop])), ((ListNode)yyVals[0+yyTop]), null);
}
break;
case 65:
// line 523 "DefaultRubyParser.y"
{
/*mirko: check*/
yyVal = new MultipleAsgnNode(support.union(((Node)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop])), ((ListNode)yyVals[-1+yyTop]).add(((Node)yyVals[0+yyTop])), null);
((Node)yyVals[-1+yyTop]).setPosition(support.union(((Node)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop])));
}
break;
case 66:
// line 528 "DefaultRubyParser.y"
{
yyVal = new MultipleAsgnNode(getPosition(((ListNode)yyVals[-2+yyTop])), ((ListNode)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]));
}
break;
case 67:
// line 531 "DefaultRubyParser.y"
{
yyVal = new MultipleAsgnNode(getPosition(((ListNode)yyVals[-1+yyTop])), ((ListNode)yyVals[-1+yyTop]), new StarNode(getPosition(null)));
}
break;
case 68:
// line 534 "DefaultRubyParser.y"
{
yyVal = new MultipleAsgnNode(getPosition(((Token)yyVals[-1+yyTop])), null, ((Node)yyVals[0+yyTop]));
}
break;
case 69:
// line 537 "DefaultRubyParser.y"
{
yyVal = new MultipleAsgnNode(getPosition(((Token)yyVals[0+yyTop])), null, new StarNode(getPosition(null)));
}
break;
case 71:
// line 542 "DefaultRubyParser.y"
{
yyVal = ((MultipleAsgnNode)yyVals[-1+yyTop]);
}
break;
case 72:
// line 547 "DefaultRubyParser.y"
{
yyVal = support.newArrayNode(((Node)yyVals[-1+yyTop]).getPosition(), ((Node)yyVals[-1+yyTop]));
}
break;
case 73:
// line 550 "DefaultRubyParser.y"
{
yyVal = ((ListNode)yyVals[-2+yyTop]).add(((Node)yyVals[-1+yyTop]));
}
break;
case 74:
// line 554 "DefaultRubyParser.y"
{
yyVal = support.assignable(((Token)yyVals[0+yyTop]), NilImplicitNode.NIL);
}
break;
case 75:
// line 557 "DefaultRubyParser.y"
{
yyVal = support.aryset(((Node)yyVals[-3+yyTop]), ((Node)yyVals[-1+yyTop]));
}
break;
case 76:
// line 560 "DefaultRubyParser.y"
{
yyVal = support.attrset(((Node)yyVals[-2+yyTop]), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 77:
// line 563 "DefaultRubyParser.y"
{
yyVal = support.attrset(((Node)yyVals[-2+yyTop]), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 78:
// line 566 "DefaultRubyParser.y"
{
yyVal = support.attrset(((Node)yyVals[-2+yyTop]), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 79:
// line 569 "DefaultRubyParser.y"
{
if (support.isInDef() || support.isInSingle()) {
yyerror("dynamic constant assignment");
}
ISourcePosition position = support.union(((Node)yyVals[-2+yyTop]), ((Token)yyVals[0+yyTop]));
yyVal = new ConstDeclNode(position, null, new Colon2Node(position, ((Node)yyVals[-2+yyTop]), (String) ((Token)yyVals[0+yyTop]).getValue()), NilImplicitNode.NIL);
}
break;
case 80:
// line 578 "DefaultRubyParser.y"
{
if (support.isInDef() || support.isInSingle()) {
yyerror("dynamic constant assignment");
}
ISourcePosition position = support.union(((Token)yyVals[-1+yyTop]), ((Token)yyVals[0+yyTop]));
yyVal = new ConstDeclNode(position, null, new Colon3Node(position, (String) ((Token)yyVals[0+yyTop]).getValue()), NilImplicitNode.NIL);
}
break;
case 81:
// line 587 "DefaultRubyParser.y"
{
support.backrefAssignError(((Node)yyVals[0+yyTop]));
}
break;
case 82:
// line 592 "DefaultRubyParser.y"
{
yyVal = support.assignable(((Token)yyVals[0+yyTop]), NilImplicitNode.NIL);
}
break;
case 83:
// line 595 "DefaultRubyParser.y"
{
yyVal = support.aryset(((Node)yyVals[-3+yyTop]), ((Node)yyVals[-1+yyTop]));
}
break;
case 84:
// line 598 "DefaultRubyParser.y"
{
yyVal = support.attrset(((Node)yyVals[-2+yyTop]), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 85:
// line 601 "DefaultRubyParser.y"
{
yyVal = support.attrset(((Node)yyVals[-2+yyTop]), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 86:
// line 604 "DefaultRubyParser.y"
{
yyVal = support.attrset(((Node)yyVals[-2+yyTop]), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 87:
// line 607 "DefaultRubyParser.y"
{
if (support.isInDef() || support.isInSingle()) {
yyerror("dynamic constant assignment");
}
ISourcePosition position = support.union(((Node)yyVals[-2+yyTop]), ((Token)yyVals[0+yyTop]));
yyVal = new ConstDeclNode(position, null, new Colon2Node(position, ((Node)yyVals[-2+yyTop]), (String) ((Token)yyVals[0+yyTop]).getValue()), NilImplicitNode.NIL);
}
break;
case 88:
// line 616 "DefaultRubyParser.y"
{
if (support.isInDef() || support.isInSingle()) {
yyerror("dynamic constant assignment");
}
ISourcePosition position = support.union(((Token)yyVals[-1+yyTop]), ((Token)yyVals[0+yyTop]));
yyVal = new ConstDeclNode(position, null, new Colon3Node(position, (String) ((Token)yyVals[0+yyTop]).getValue()), NilImplicitNode.NIL);
}
break;
case 89:
// line 625 "DefaultRubyParser.y"
{
support.backrefAssignError(((Node)yyVals[0+yyTop]));
}
break;
case 90:
// line 629 "DefaultRubyParser.y"
{
yyerror("class/module name must be CONSTANT");
}
break;
case 92:
// line 634 "DefaultRubyParser.y"
{
yyVal = new Colon3Node(support.union(((Token)yyVals[-1+yyTop]), ((Token)yyVals[0+yyTop])), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 93:
// line 637 "DefaultRubyParser.y"
{
yyVal = new Colon2Node(((Token)yyVals[0+yyTop]).getPosition(), null, (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 94:
// line 640 "DefaultRubyParser.y"
{
yyVal = new Colon2Node(support.union(((Node)yyVals[-2+yyTop]), ((Token)yyVals[0+yyTop])), ((Node)yyVals[-2+yyTop]), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 98:
// line 646 "DefaultRubyParser.y"
{
lexer.setState(LexState.EXPR_END);
yyVal = ((Token)yyVals[0+yyTop]);
}
break;
case 99:
// line 651 "DefaultRubyParser.y"
{
lexer.setState(LexState.EXPR_END);
yyVal = yyVals[0+yyTop];
}
break;
case 102:
// line 658 "DefaultRubyParser.y"
{
yyVal = new UndefNode(getPosition(((Token)yyVals[0+yyTop])), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 103:
// line 661 "DefaultRubyParser.y"
{
lexer.setState(LexState.EXPR_FNAME);
}
break;
case 104:
// line 663 "DefaultRubyParser.y"
{
yyVal = support.appendToBlock(((Node)yyVals[-3+yyTop]), new UndefNode(getPosition(((Node)yyVals[-3+yyTop])), (String) ((Token)yyVals[0+yyTop]).getValue()));
}
break;
case 172:
// line 682 "DefaultRubyParser.y"
{
yyVal = support.node_assign(((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]));
/* FIXME: Consider fixing node_assign itself rather than single case*/
((Node)yyVal).setPosition(support.union(((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop])));
}
break;
case 173:
// line 687 "DefaultRubyParser.y"
{
ISourcePosition position = support.union(((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop]));
Node body = ((Node)yyVals[0+yyTop]) == null ? NilImplicitNode.NIL : ((Node)yyVals[0+yyTop]);
yyVal = support.node_assign(((Node)yyVals[-4+yyTop]), new RescueNode(position, ((Node)yyVals[-2+yyTop]), new RescueBodyNode(position, null, body, null), null));
}
break;
case 174:
// line 692 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[0+yyTop]));
String asgnOp = (String) ((Token)yyVals[-1+yyTop]).getValue();
if (asgnOp.equals("||")) {
((AssignableNode)yyVals[-2+yyTop]).setValueNode(((Node)yyVals[0+yyTop]));
yyVal = new OpAsgnOrNode(support.union(((AssignableNode)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop])), support.gettable2(((AssignableNode)yyVals[-2+yyTop])), ((AssignableNode)yyVals[-2+yyTop]));
} else if (asgnOp.equals("&&")) {
((AssignableNode)yyVals[-2+yyTop]).setValueNode(((Node)yyVals[0+yyTop]));
yyVal = new OpAsgnAndNode(support.union(((AssignableNode)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop])), support.gettable2(((AssignableNode)yyVals[-2+yyTop])), ((AssignableNode)yyVals[-2+yyTop]));
} else {
((AssignableNode)yyVals[-2+yyTop]).setValueNode(support.getOperatorCallNode(support.gettable2(((AssignableNode)yyVals[-2+yyTop])), asgnOp, ((Node)yyVals[0+yyTop])));
((AssignableNode)yyVals[-2+yyTop]).setPosition(support.union(((AssignableNode)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop])));
yyVal = ((AssignableNode)yyVals[-2+yyTop]);
}
}
break;
case 175:
// line 708 "DefaultRubyParser.y"
{
yyVal = support.new_opElementAsgnNode(getPosition(((Node)yyVals[-5+yyTop])), ((Node)yyVals[-5+yyTop]), (String) ((Token)yyVals[-1+yyTop]).getValue(), ((Node)yyVals[-3+yyTop]), ((Node)yyVals[0+yyTop]));
}
break;
case 176:
// line 711 "DefaultRubyParser.y"
{
yyVal = new OpAsgnNode(getPosition(((Node)yyVals[-4+yyTop])), ((Node)yyVals[-4+yyTop]), ((Node)yyVals[0+yyTop]), (String) ((Token)yyVals[-2+yyTop]).getValue(), (String) ((Token)yyVals[-1+yyTop]).getValue());
}
break;
case 177:
// line 714 "DefaultRubyParser.y"
{
yyVal = new OpAsgnNode(getPosition(((Node)yyVals[-4+yyTop])), ((Node)yyVals[-4+yyTop]), ((Node)yyVals[0+yyTop]), (String) ((Token)yyVals[-2+yyTop]).getValue(), (String) ((Token)yyVals[-1+yyTop]).getValue());
}
break;
case 178:
// line 717 "DefaultRubyParser.y"
{
yyVal = new OpAsgnNode(getPosition(((Node)yyVals[-4+yyTop])), ((Node)yyVals[-4+yyTop]), ((Node)yyVals[0+yyTop]), (String) ((Token)yyVals[-2+yyTop]).getValue(), (String) ((Token)yyVals[-1+yyTop]).getValue());
}
break;
case 179:
// line 720 "DefaultRubyParser.y"
{