* expression.h (enum exp_opcode): Add a new operator for F90

subrange.
        * f-lang.h (enum f90_range_type): New enumeration type to identify
        F90 subrange type.
        * f-exp.y (yyparse): Add support for parsing F90 subrange and
        change substring parsing to subrange parsing.
        * parse.c (operator_length_standard): Set the operator length
        and args number for OP_F90_RANGE.
        * eval.c (evaluate_subexp_standard): Add code to evaluate F90
        array section and substring.
        (value_f90_subarray): New function to evaluate F90 array section.
        (evaluate_subexp_standard): Delete label op_f77_substr and its code
        because the logic is implemented by function value_f90_subarray now.
This commit is contained in:
Wu Zhou
2005-09-20 06:25:34 +00:00
parent 096f7d00c1
commit 0b4e13251c
6 changed files with 116 additions and 29 deletions

View File

@ -36,6 +36,19 @@ extern int f_val_print (struct type *, const gdb_byte *, int, CORE_ADDR,
/* Language-specific data structures */
/* In F90 subrange expression, either bound could be empty, indicating that
its value is by default that of the corresponding bound of the array or
string. So we have four sorts of subrange in F90. This enumeration type
is to identify this. */
enum f90_range_type
{
BOTH_BOUND_DEFAULT, /* "(:)" */
LOW_BOUND_DEFAULT, /* "(:high)" */
HIGH_BOUND_DEFAULT, /* "(low:)" */
NONE_BOUND_DEFAULT /* "(low:high)" */
};
struct common_entry
{
struct symbol *symbol; /* The symbol node corresponding