else
pstate->wrap2<fortran_associated_2arg> ();
}
+ else if ($1 == FORTRAN_ARRAY_SIZE)
+ {
+ if (n == 1)
+ pstate->wrap<fortran_array_size_1arg> ();
+ else
+ pstate->wrap2<fortran_array_size_2arg> ();
+ }
else
{
std::vector<operation_up> args
case UNOP_FORTRAN_ALLOCATED:
pstate->wrap<fortran_allocated_operation> ();
break;
+ case UNOP_FORTRAN_RANK:
+ pstate->wrap<fortran_rank_operation> ();
+ break;
+ case UNOP_FORTRAN_SHAPE:
+ pstate->wrap<fortran_array_shape_operation> ();
+ break;
+ case UNOP_FORTRAN_LOC:
+ pstate->wrap<fortran_loc_operation> ();
+ break;
default:
gdb_assert_not_reached ("unhandled intrinsic");
}
exp : exp '%' name
{
- pstate->push_new<structop_operation>
+ pstate->push_new<fortran_structop_operation>
(pstate->pop (), copy_name ($3));
}
;
exp : exp '%' name COMPLETE
{
structop_base_operation *op
- = new structop_operation (pstate->pop (),
- copy_name ($3));
+ = new fortran_structop_operation (pstate->pop (),
+ copy_name ($3));
pstate->mark_struct_expression (op);
pstate->push (operation_up (op));
}
exp : exp '%' COMPLETE
{
structop_base_operation *op
- = new structop_operation (pstate->pop (), "");
+ = new fortran_structop_operation (pstate->pop (),
+ "");
pstate->mark_struct_expression (op);
pstate->push (operation_up (op));
}
{ "ubound", UNOP_OR_BINOP_INTRINSIC, FORTRAN_UBOUND, false },
{ "allocated", UNOP_INTRINSIC, UNOP_FORTRAN_ALLOCATED, false },
{ "associated", UNOP_OR_BINOP_INTRINSIC, FORTRAN_ASSOCIATED, false },
+ { "rank", UNOP_INTRINSIC, UNOP_FORTRAN_RANK, false },
+ { "size", UNOP_OR_BINOP_INTRINSIC, FORTRAN_ARRAY_SIZE, false },
+ { "shape", UNOP_INTRINSIC, UNOP_FORTRAN_SHAPE, false },
+ { "loc", UNOP_INTRINSIC, UNOP_FORTRAN_LOC, false },
};
/* Implementation of a dynamically expandable buffer for processing input