break;
case 18:
// line 341 "DefaultRubyParser.y"
{
if (((Node)yyVals[-2+yyTop]) != null && ((Node)yyVals[-2+yyTop]) instanceof BeginNode) {
yyVal = new UntilNode(getPosition(((Node)yyVals[-2+yyTop])), support.getConditionNode(((Node)yyVals[0+yyTop])), ((BeginNode)yyVals[-2+yyTop]).getBodyNode(), false);
} else {
yyVal = new UntilNode(getPosition(((Node)yyVals[-2+yyTop])), support.getConditionNode(((Node)yyVals[0+yyTop])), ((Node)yyVals[-2+yyTop]), true);
}
}
break;
case 19:
// line 348 "DefaultRubyParser.y"
{
Node body = ((Node)yyVals[0+yyTop]) == null ? NilImplicitNode.NIL : ((Node)yyVals[0+yyTop]);
yyVal = new RescueNode(getPosition(((Node)yyVals[-2+yyTop])), ((Node)yyVals[-2+yyTop]), new RescueBodyNode(getPosition(((Node)yyVals[-2+yyTop])), null, body, null), null);
}
break;
case 20:
// line 352 "DefaultRubyParser.y"
{
if (support.isInDef() || support.isInSingle()) {
yyerror("BEGIN in method");
}
support.pushLocalScope();
}
break;
case 21:
// line 357 "DefaultRubyParser.y"
{
support.getResult().addBeginNode(new PreExeNode(getPosition(((Node)yyVals[-1+yyTop])), support.getCurrentScope(), ((Node)yyVals[-1+yyTop])));
support.popCurrentScope();
yyVal = null; /*XXX 0;*/
}
break;
case 22:
// line 362 "DefaultRubyParser.y"
{
if (support.isInDef() || support.isInSingle()) {
warnings.warn(ID.END_IN_METHOD, getPosition(((Token)yyVals[-3+yyTop])), "END in method; use at_exit");
}
yyVal = new PostExeNode(getPosition(((Node)yyVals[-1+yyTop])), ((Node)yyVals[-1+yyTop]));
}
break;
case 23:
// line 368 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[0+yyTop]));
yyVal = support.node_assign(((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]));
}
break;
case 24:
// line 372 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[0+yyTop]));
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 25:
// line 381 "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 26:
// line 397 "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 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"
{
yyerror("constant re-assignment");
}
break;
case 180:
// line 723 "DefaultRubyParser.y"
{
yyerror("constant re-assignment");
}
break;
case 181:
// line 726 "DefaultRubyParser.y"
{
support.backrefAssignError(((Node)yyVals[-2+yyTop]));
}
break;
case 182:
// line 729 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[-2+yyTop]));
support.checkExpression(((Node)yyVals[0+yyTop]));
boolean isLiteral = ((Node)yyVals[-2+yyTop]) instanceof FixnumNode && ((Node)yyVals[0+yyTop]) instanceof FixnumNode;
yyVal = new DotNode(support.union(((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop])), ((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]), false, isLiteral);
}
break;
case 183:
// line 736 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[-2+yyTop]));
support.checkExpression(((Node)yyVals[0+yyTop]));
boolean isLiteral = ((Node)yyVals[-2+yyTop]) instanceof FixnumNode && ((Node)yyVals[0+yyTop]) instanceof FixnumNode;
yyVal = new DotNode(support.union(((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop])), ((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]), true, isLiteral);
}
break;
case 184:
// line 742 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "+", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 185:
// line 745 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "-", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 186:
// line 748 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "*", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 187:
// line 751 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "/", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 188:
// line 754 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "%", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 189:
// line 757 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "**", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 190:
// line 760 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "**", ((Node)yyVals[0+yyTop]), getPosition(null)), "-@");
}
break;
case 191:
// line 763 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(support.getOperatorCallNode(((FloatNode)yyVals[-2+yyTop]), "**", ((Node)yyVals[0+yyTop]), getPosition(null)), "-@");
}
break;
case 192:
// line 766 "DefaultRubyParser.y"
{
if (support.isLiteral(((Node)yyVals[0+yyTop]))) {
yyVal = ((Node)yyVals[0+yyTop]);
} else {
yyVal = support.getOperatorCallNode(((Node)yyVals[0+yyTop]), "+@");
}
}
break;
case 193:
// line 773 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[0+yyTop]), "-@");
}
break;
case 194:
// line 776 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "|", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 195:
// line 779 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "^", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 196:
// line 782 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "&", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 197:
// line 785 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "<=>", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 198:
// line 788 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), ">", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 199:
// line 791 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), ">=", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 200:
// line 794 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "<", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 201:
// line 797 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "<=", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 202:
// line 800 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "==", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 203:
// line 803 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "===", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 204:
// line 806 "DefaultRubyParser.y"
{
yyVal = new NotNode(support.union(((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop])), support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "==", ((Node)yyVals[0+yyTop]), getPosition(null)));
}
break;
case 205:
// line 809 "DefaultRubyParser.y"
{
yyVal = support.getMatchNode(((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]));
}
break;
case 206:
// line 812 "DefaultRubyParser.y"
{
yyVal = new NotNode(support.union(((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop])), support.getMatchNode(((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop])));
}
break;
case 207:
// line 815 "DefaultRubyParser.y"
{
yyVal = new NotNode(support.union(((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop])), support.getConditionNode(((Node)yyVals[0+yyTop])));
}
break;
case 208:
// line 818 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[0+yyTop]), "~");
}
break;
case 209:
// line 821 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), "<<", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 210:
// line 824 "DefaultRubyParser.y"
{
yyVal = support.getOperatorCallNode(((Node)yyVals[-2+yyTop]), ">>", ((Node)yyVals[0+yyTop]), getPosition(null));
}
break;
case 211:
// line 827 "DefaultRubyParser.y"
{
yyVal = support.newAndNode(getPosition(((Token)yyVals[-1+yyTop])), ((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]));
}
break;
case 212:
// line 830 "DefaultRubyParser.y"
{
yyVal = support.newOrNode(getPosition(((Token)yyVals[-1+yyTop])), ((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]));
}
break;
case 213:
// line 833 "DefaultRubyParser.y"
{
yyVal = new DefinedNode(getPosition(((Token)yyVals[-2+yyTop])), ((Node)yyVals[0+yyTop]));
}
break;
case 214:
// line 836 "DefaultRubyParser.y"
{
yyVal = new IfNode(getPosition(((Node)yyVals[-4+yyTop])), support.getConditionNode(((Node)yyVals[-4+yyTop])), ((Node)yyVals[-2+yyTop]), ((Node)yyVals[0+yyTop]));
}
break;
case 215:
// line 839 "DefaultRubyParser.y"
{
yyVal = ((Node)yyVals[0+yyTop]);
}
break;
case 216:
// line 843 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[0+yyTop]));
yyVal = ((Node)yyVals[0+yyTop]);
}
break;
case 218:
// line 849 "DefaultRubyParser.y"
{
yyVal = support.newArrayNode(getPosition(((Node)yyVals[-1+yyTop])), ((Node)yyVals[-1+yyTop]));
}
break;
case 219:
// line 852 "DefaultRubyParser.y"
{
yyVal = ((ListNode)yyVals[-1+yyTop]);
}
break;
case 220:
// line 855 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[-1+yyTop]));
yyVal = support.arg_concat(getPosition(((ListNode)yyVals[-4+yyTop])), ((ListNode)yyVals[-4+yyTop]), ((Node)yyVals[-1+yyTop]));
}
break;
case 221:
// line 859 "DefaultRubyParser.y"
{
yyVal = support.newArrayNode(getPosition(((ListNode)yyVals[-1+yyTop])), new HashNode(getPosition(null), ((ListNode)yyVals[-1+yyTop])));
}
break;
case 222:
// line 862 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[-1+yyTop]));
yyVal = new NewlineNode(getPosition(((Token)yyVals[-2+yyTop])), support.newSplatNode(getPosition(((Token)yyVals[-2+yyTop])), ((Node)yyVals[-1+yyTop])));
}
break;
case 223:
// line 867 "DefaultRubyParser.y"
{
yyVal = new ArrayNode(support.union(((Token)yyVals[-2+yyTop]), ((Token)yyVals[0+yyTop])));
}
break;
case 224:
// line 870 "DefaultRubyParser.y"
{
yyVal = ((Node)yyVals[-2+yyTop]);
((Node)yyVal).setPosition(support.union(((Token)yyVals[-3+yyTop]), ((Token)yyVals[0+yyTop])));
}
break;
case 225:
// line 874 "DefaultRubyParser.y"
{
yyVal = support.newArrayNode(getPosition(((Token)yyVals[-3+yyTop])), ((Node)yyVals[-2+yyTop]));
}
break;
case 226:
// line 877 "DefaultRubyParser.y"
{
yyVal = ((ListNode)yyVals[-4+yyTop]).add(((Node)yyVals[-2+yyTop]));
}
break;
case 229:
// line 884 "DefaultRubyParser.y"
{
yyVal = support.newArrayNode(getPosition(((Node)yyVals[0+yyTop])), ((Node)yyVals[0+yyTop]));
}
break;
case 230:
// line 887 "DefaultRubyParser.y"
{
yyVal = support.arg_blk_pass(((ListNode)yyVals[-1+yyTop]), ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 231:
// line 890 "DefaultRubyParser.y"
{
yyVal = support.arg_concat(getPosition(((ListNode)yyVals[-4+yyTop])), ((ListNode)yyVals[-4+yyTop]), ((Node)yyVals[-1+yyTop]));
yyVal = support.arg_blk_pass(((Node)yyVal), ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 232:
// line 894 "DefaultRubyParser.y"
{
yyVal = support.newArrayNode(getPosition(((ListNode)yyVals[-1+yyTop])), new HashNode(getPosition(null), ((ListNode)yyVals[-1+yyTop])));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 233:
// line 898 "DefaultRubyParser.y"
{
yyVal = support.arg_concat(getPosition(((ListNode)yyVals[-4+yyTop])), support.newArrayNode(getPosition(((ListNode)yyVals[-4+yyTop])), new HashNode(getPosition(null), ((ListNode)yyVals[-4+yyTop]))), ((Node)yyVals[-1+yyTop]));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 234:
// line 902 "DefaultRubyParser.y"
{
yyVal = ((ListNode)yyVals[-3+yyTop]).add(new HashNode(getPosition(null), ((ListNode)yyVals[-1+yyTop])));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 235:
// line 906 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[-1+yyTop]));
yyVal = support.arg_concat(getPosition(((ListNode)yyVals[-6+yyTop])), ((ListNode)yyVals[-6+yyTop]).add(new HashNode(getPosition(null), ((ListNode)yyVals[-4+yyTop]))), ((Node)yyVals[-1+yyTop]));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 236:
// line 911 "DefaultRubyParser.y"
{
yyVal = support.arg_blk_pass(support.newSplatNode(getPosition(((Token)yyVals[-2+yyTop])), ((Node)yyVals[-1+yyTop])), ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 237:
// line 914 "DefaultRubyParser.y"
{}
break;
case 238:
// line 916 "DefaultRubyParser.y"
{
yyVal = support.arg_blk_pass(support.newArrayNode(getPosition(((Node)yyVals[-3+yyTop])), ((Node)yyVals[-3+yyTop])).addAll(((ListNode)yyVals[-1+yyTop])), ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 239:
// line 919 "DefaultRubyParser.y"
{
yyVal = support.arg_blk_pass(support.newArrayNode(getPosition(((Node)yyVals[-2+yyTop])), ((Node)yyVals[-2+yyTop])), ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 240:
// line 922 "DefaultRubyParser.y"
{
yyVal = support.arg_concat(getPosition(((Node)yyVals[-4+yyTop])), support.newArrayNode(getPosition(((Node)yyVals[-4+yyTop])), ((Node)yyVals[-4+yyTop])), ((Node)yyVals[-1+yyTop]));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 241:
// line 926 "DefaultRubyParser.y"
{
yyVal = support.arg_concat(getPosition(((Node)yyVals[-6+yyTop])), support.newArrayNode(getPosition(((Node)yyVals[-6+yyTop])), ((Node)yyVals[-6+yyTop])).addAll(new HashNode(getPosition(null), ((ListNode)yyVals[-4+yyTop]))), ((Node)yyVals[-1+yyTop]));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 242:
// line 930 "DefaultRubyParser.y"
{
yyVal = support.newArrayNode(getPosition(((ListNode)yyVals[-1+yyTop])), new HashNode(getPosition(null), ((ListNode)yyVals[-1+yyTop])));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 243:
// line 934 "DefaultRubyParser.y"
{
yyVal = support.arg_concat(getPosition(((ListNode)yyVals[-4+yyTop])), support.newArrayNode(getPosition(((ListNode)yyVals[-4+yyTop])), new HashNode(getPosition(null), ((ListNode)yyVals[-4+yyTop]))), ((Node)yyVals[-1+yyTop]));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 244:
// line 938 "DefaultRubyParser.y"
{
yyVal = support.newArrayNode(getPosition(((Node)yyVals[-3+yyTop])), ((Node)yyVals[-3+yyTop])).add(new HashNode(getPosition(null), ((ListNode)yyVals[-1+yyTop])));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 245:
// line 942 "DefaultRubyParser.y"
{
yyVal = support.newArrayNode(getPosition(((Node)yyVals[-5+yyTop])), ((Node)yyVals[-5+yyTop])).addAll(((ListNode)yyVals[-3+yyTop])).add(new HashNode(getPosition(null), ((ListNode)yyVals[-1+yyTop])));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 246:
// line 946 "DefaultRubyParser.y"
{
yyVal = support.arg_concat(getPosition(((Node)yyVals[-6+yyTop])), support.newArrayNode(getPosition(((Node)yyVals[-6+yyTop])), ((Node)yyVals[-6+yyTop])).add(new HashNode(getPosition(null), ((ListNode)yyVals[-4+yyTop]))), ((Node)yyVals[-1+yyTop]));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 247:
// line 950 "DefaultRubyParser.y"
{
yyVal = support.arg_concat(getPosition(((Node)yyVals[-8+yyTop])), support.newArrayNode(getPosition(((Node)yyVals[-8+yyTop])), ((Node)yyVals[-8+yyTop])).addAll(((ListNode)yyVals[-6+yyTop])).add(new HashNode(getPosition(null), ((ListNode)yyVals[-4+yyTop]))), ((Node)yyVals[-1+yyTop]));
yyVal = support.arg_blk_pass((Node)yyVal, ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 248:
// line 954 "DefaultRubyParser.y"
{
yyVal = support.arg_blk_pass(support.newSplatNode(getPosition(((Token)yyVals[-2+yyTop])), ((Node)yyVals[-1+yyTop])), ((BlockPassNode)yyVals[0+yyTop]));
}
break;
case 249:
// line 957 "DefaultRubyParser.y"
{}
break;
case 250:
// line 959 "DefaultRubyParser.y"
{
yyVal = new Long(lexer.getCmdArgumentState().begin());
}
break;
case 251:
// line 961 "DefaultRubyParser.y"
{
lexer.getCmdArgumentState().reset(((Long)yyVals[-1+yyTop]).longValue());
yyVal = ((Node)yyVals[0+yyTop]);
}
break;
case 253:
// line 967 "DefaultRubyParser.y"
{
lexer.setState(LexState.EXPR_ENDARG);
}
break;
case 254:
// line 969 "DefaultRubyParser.y"
{
warnings.warn(ID.ARGUMENT_EXTRA_SPACE, getPosition(((Token)yyVals[-2+yyTop])), "don't put space before argument parentheses");
yyVal = null;
}
break;
case 255:
// line 973 "DefaultRubyParser.y"
{
lexer.setState(LexState.EXPR_ENDARG);
}
break;
case 256:
// line 975 "DefaultRubyParser.y"
{
warnings.warn(ID.ARGUMENT_EXTRA_SPACE, getPosition(((Token)yyVals[-3+yyTop])), "don't put space before argument parentheses");
yyVal = ((Node)yyVals[-2+yyTop]);
}
break;
case 257:
// line 980 "DefaultRubyParser.y"
{
support.checkExpression(((Node)yyVals[0+yyTop]));
yyVal = new BlockPassNode(support.union(((Token)yyVals[-1+yyTop]), ((Node)yyVals[0+yyTop])), ((Node)yyVals[0+yyTop]));
}
break;
case 258:
// line 985 "DefaultRubyParser.y"
{
yyVal = ((BlockPassNode)yyVals[0+yyTop]);
}
break;
case 260:
// line 990 "DefaultRubyParser.y"
{
yyVal = support.newArrayNode(getPosition2(((Node)yyVals[0+yyTop])), ((Node)yyVals[0+yyTop]));
}
break;
case 261:
// line 993 "DefaultRubyParser.y"
{
yyVal = ((ListNode)yyVals[-2+yyTop]).add(((Node)yyVals[0+yyTop]));
}
break;
case 262:
// line 997 "DefaultRubyParser.y"
{
yyVal = ((ListNode)yyVals[-2+yyTop]).add(((Node)yyVals[0+yyTop]));
}
break;
case 263:
// line 1000 "DefaultRubyParser.y"
{
yyVal = support.arg_concat(getPosition(((ListNode)yyVals[-3+yyTop])), ((ListNode)yyVals[-3+yyTop]), ((Node)yyVals[0+yyTop]));
}
break;
case 264:
// line 1003 "DefaultRubyParser.y"
{
yyVal = support.newSplatNode(getPosition(((Token)yyVals[-1+yyTop])), ((Node)yyVals[0+yyTop]));
}
break;
case 273:
// line 1015 "DefaultRubyParser.y"
{
yyVal = new FCallNoArgNode(((Token)yyVals[0+yyTop]).getPosition(), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 274:
// line 1018 "DefaultRubyParser.y"
{
yyVal = new BeginNode(support.union(((Token)yyVals[-2+yyTop]), ((Token)yyVals[0+yyTop])), ((Node)yyVals[-1+yyTop]) == null ? NilImplicitNode.NIL : ((Node)yyVals[-1+yyTop]));
}
break;
case 275:
// line 1021 "DefaultRubyParser.y"
{
lexer.setState(LexState.EXPR_ENDARG);
}
break;
case 276:
// line 1023 "DefaultRubyParser.y"
{
warnings.warning(ID.GROUPED_EXPRESSION, getPosition(((Token)yyVals[-4+yyTop])), "(...) interpreted as grouped expression");
yyVal = ((Node)yyVals[-3+yyTop]);
}
break;
case 277:
// line 1027 "DefaultRubyParser.y"
{
if (((Node)yyVals[-1+yyTop]) != null) {
/* compstmt position includes both parens around it*/
((ISourcePositionHolder) ((Node)yyVals[-1+yyTop])).setPosition(support.union(((Token)yyVals[-2+yyTop]), ((Token)yyVals[0+yyTop])));
}
yyVal = ((Node)yyVals[-1+yyTop]);
}
break;
case 278:
// line 1034 "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 279:
// line 1037 "DefaultRubyParser.y"
{
yyVal = new Colon3Node(support.union(((Token)yyVals[-1+yyTop]), ((Token)yyVals[0+yyTop])), (String) ((Token)yyVals[0+yyTop]).getValue());
}
break;
case 280:
// line 1040 "DefaultRubyParser.y"
{
if (((Node)yyVals[-3+yyTop]) instanceof SelfNode) {
yyVal = support.new_fcall(new Token("[]", support.union(((Node)yyVals[-3+yyTop]), ((Token)yyVals[0+yyTop]))), ((Node)yyVals[-1+yyTop]), null);
} else {
yyVal = support.new_call(((Node)yyVals[-3+yyTop]), new Token("[]", support.union(((Node)yyVals[-3+yyTop]), ((Token)yyVals[0+yyTop]))), ((Node)yyVals[-1+yyTop]), null);
}
}
break;
case 281:
// line 1047 "DefaultRubyParser.y"
{
ISourcePosition position = support.union(((Token)yyVals[-2+yyTop]), ((Token)yyVals[0+yyTop]));
if (((Node)yyVals[-1+yyTop]) == null) {
yyVal = new ZArrayNode(position); /* zero length array */
} else {
yyVal = ((Node)yyVals[-1+yyTop]);
((ISourcePositionHolder)yyVal).setPosition(position);
}
}
break;
case 282:
// line 1056 "DefaultRubyParser.y"
{
yyVal = new HashNode(support.union(((Token)yyVals[-2+yyTop]), ((Token)yyVals[0+yyTop])), ((ListNode)yyVals[-1+yyTop]));
}
break;
case 283:
// line 1059 "DefaultRubyParser.y"
{
yyVal = new ReturnNode(((Token)yyVals[0+yyTop]).getPosition(), NilImplicitNode.NIL);
}
break;
case 284:
// line 1062 "DefaultRubyParser.y"
{
yyVal = support.new_yield(support.union(((Token)yyVals[-3+yyTop]), ((Token)yyVals[0+yyTop])), ((Node)yyVals[-1+yyTop]));
}
break;
case 285:
// line 1065 "DefaultRubyParser.y"
{
yyVal = new YieldNode(support.union(((Token)yyVals[-2+yyTop]), ((Token)yyVals[0+yyTop])), null, false);
}
break;
case 286:
// line 1068 "DefaultRubyParser.y"
{
yyVal = new YieldNode(((Token)yyVals[0+yyTop]).getPosition(), null, false);
}
break;
case 287:
// line 1071 "DefaultRubyParser.y"
{
yyVal = new DefinedNode(getPosition(((Token)yyVals[-4+yyTop])), ((Node)yyVals[-1+yyTop]));
}
break;
case 288:
// line 1074 "DefaultRubyParser.y"
{
yyVal = new FCallNoArgBlockNode(support.union(((Token)yyVals[-1+yyTop]), ((IterNode)yyVals[0+yyTop])), (String) ((Token)yyVals[-1+yyTop]).getValue(), ((IterNode)yyVals[0+yyTop]));
}
break;
case 290:
// line 1078 "DefaultRubyParser.y"
{
if (((Node)yyVals[-1+yyTop]) != null &&
((BlockAcceptingNode)yyVals[-1+yyTop]).getIterNode() instanceof BlockPassNode) {
throw new SyntaxException(PID.BLOCK_ARG_AND_BLOCK_GIVEN, getPosition(((Node)yyVals[-1+yyTop])), "Both block arg and actual block given.");
}
yyVal = ((BlockAcceptingNode)yyVals[-1+yyTop]).setIterNode(((IterNode)yyVals[0+yyTop]));
((Node)yyVal).setPosition(support.union(((Node)yyVals[-1+yyTop]), ((IterNode)yyVals[0+yyTop])));
}
break;
case 291:
// line 1086 "DefaultRubyParser.y"
{
yyVal = new IfNode(support.union(((Token)yyVals[-5+yyTop]), ((Token)yyVals[0+yyTop])), support.getConditionNode(((Node)yyVals[-4+yyTop])), ((Node)yyVals[-2+yyTop]), ((Node)yyVals[-1+yyTop]));
}
break;
case 292:
// line 1089 "DefaultRubyParser.y"
{
yyVal = new IfNode(support.union(((Token)yyVals[-5+yyTop]), ((Token)yyVals[0+yyTop])), support.getConditionNode(((Node)yyVals[-4+yyTop])), ((Node)yyVals[-1+yyTop]), ((Node)yyVals[-2+yyTop]));
}
break;
case 293:
// line 1092 "DefaultRubyParser.y"
{
lexer.getConditionState().begin();
}
break;
case 294:
// line 1094 "DefaultRubyParser.y"
{
lexer.getConditionState().end();
}
break;
case 295:
// line 1096 "DefaultRubyParser.y"
{
Node body = ((Node)yyVals[-1+yyTop]) == null ? NilImplicitNode.NIL : ((Node)yyVals[-1+yyTop]);
yyVal = new WhileNode(support.union(((Token)yyVals[-6+yyTop]), ((Token)yyVals[0+yyTop])), support.getConditionNode(((Node)yyVals[-4+yyTop])), body);
}
break;
case 296:
// line 1100 "DefaultRubyParser.y"
{
lexer.getConditionState().begin();
}
break;
case 297:
// line 1102 "DefaultRubyParser.y"
{
lexer.getConditionState().end();
}
break;
case 298:
// line 1104 "DefaultRubyParser.y"
{
Node body = ((Node)yyVals[-1+yyTop]) == null ? NilImplicitNode.NIL : ((Node)yyVals[-1+yyTop]);
yyVal = new UntilNode(getPosition(((Token)yyVals[-6+yyTop])), support.getConditionNode(((Node)yyVals[-4+yyTop])), body);
}
break;
case 299:
// line 1108 "DefaultRubyParser.y"
{