From bdef6b60f3f6c9e44b2a5c66a95466e82be9a21e Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Fri, 16 Sep 1994 07:28:22 +0000 Subject: [PATCH] * ch-exp.y: Get rid of some extra non-terminals, and move their rules into primitive_value. * ch-lang.c (chill_op_print_tab): Add '->'. * expprint.c (print_subexp): Recognize unary postfix operator. --- gdb/ChangeLog | 7 ++++ gdb/ch-exp.y | 91 +++++++++++++-------------------------------------- gdb/ch-lang.c | 2 ++ 3 files changed, 32 insertions(+), 68 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ae2d10d8df6..764704ae2d6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +Fri Sep 16 00:14:40 1994 Per Bothner (bothner@kalessin.cygnus.com) + + * ch-exp.y: Get rid of some extra non-terminals, and move + their rules into primitive_value. + * ch-lang.c (chill_op_print_tab): Add '->'. + * expprint.c (print_subexp): Recognize unary postfix operator. + Wed Sep 14 18:27:42 1994 Jason Molenda (crash@phydeaux.cygnus.com) * remote-hms.c: use remote_debug instead of hms_silent toggle. diff --git a/gdb/ch-exp.y b/gdb/ch-exp.y index dc46d796762..b7a0b5ec8c1 100644 --- a/gdb/ch-exp.y +++ b/gdb/ch-exp.y @@ -247,18 +247,14 @@ yyerror PARAMS ((char *)); %token GDB_VARIABLE /* Convenience variable */ %token GDB_ASSIGNMENT /* Assign value to somewhere */ -%type location %type access_name %type primitive_value -%type location_contents %type value_name %type literal %type tuple %type value_string_element %type value_string_slice -%type value_array_element %type value_array_slice -%type value_structure_field %type expression_conversion %type value_procedure_call %type value_built_in_routine_call @@ -290,7 +286,6 @@ yyerror PARAMS ((char *)); %type left_element %type right_element %type slice_size -%type array_primitive_value %type expression_list %type lower_element %type upper_element @@ -336,15 +331,6 @@ undefined_value : FIXME_01 } ; -/* Z.200, 4.2.1 */ - -location : access_name - | primitive_value POINTER - { - write_exp_elt_opcode (UNOP_IND); - } - ; - /* Z.200, 4.2.2 */ access_name : LOCATION_NAME @@ -391,9 +377,26 @@ expression_list : expression /* Z.200, 5.2.1 */ -primitive_value : location_contents +primitive_value : + access_name + | primitive_value '(' + /* This is to save the value of arglist_len + being accumulated for each dimension. */ + { start_arglist (); } + expression_list ')' { - $$ = 0; /* FIXME */ + write_exp_elt_opcode (MULTI_SUBSCRIPT); + write_exp_elt_longcst ((LONGEST) end_arglist ()); + write_exp_elt_opcode (MULTI_SUBSCRIPT); + } + | primitive_value FIELD_NAME + { write_exp_elt_opcode (STRUCTOP_STRUCT); + write_exp_string ($2); + write_exp_elt_opcode (STRUCTOP_STRUCT); + } + | primitive_value POINTER + { + write_exp_elt_opcode (UNOP_IND); } | value_name { @@ -415,18 +418,10 @@ primitive_value : location_contents { $$ = 0; /* FIXME */ } - | value_array_element - { - $$ = 0; /* FIXME */ - } | value_array_slice { $$ = 0; /* FIXME */ } - | value_structure_field - { - $$ = 0; /* FIXME */ - } | expression_conversion { $$ = 0; /* FIXME */ @@ -453,14 +448,6 @@ primitive_value : location_contents } ; -/* Z.200, 5.2.2 */ - -location_contents: location - { - $$ = 0; /* FIXME */ - } - ; - /* Z.200, 5.2.3 */ value_name : synonym_name @@ -568,41 +555,18 @@ value_string_slice: string_primitive_value '(' left_element ':' right_element ') } ; -/* Z.200, 5.2.8 */ - -value_array_element: array_primitive_value '(' - /* This is to save the value of arglist_len - being accumulated for each dimension. */ - { start_arglist (); } - expression_list ')' - { - write_exp_elt_opcode (MULTI_SUBSCRIPT); - write_exp_elt_longcst ((LONGEST) end_arglist ()); - write_exp_elt_opcode (MULTI_SUBSCRIPT); - } - ; - /* Z.200, 5.2.9 */ -value_array_slice: array_primitive_value '(' lower_element ':' upper_element ')' +value_array_slice: primitive_value '(' lower_element ':' upper_element ')' { $$ = 0; /* FIXME */ } - | array_primitive_value '(' first_element UP slice_size ')' + | primitive_value '(' first_element UP slice_size ')' { $$ = 0; /* FIXME */ } ; -/* Z.200, 5.2.10 */ - -value_structure_field: primitive_value FIELD_NAME - { write_exp_elt_opcode (STRUCTOP_STRUCT); - write_exp_string ($2); - write_exp_elt_opcode (STRUCTOP_STRUCT); - } - ; - /* Z.200, 5.2.11 */ expression_conversion: mode_name parenthesised_expression @@ -848,7 +812,7 @@ operand_5 : operand_6 /* Z.200, 5.3.9 */ -operand_6 : POINTER location +operand_6 : POINTER primitive_value { write_exp_elt_opcode (UNOP_ADDR); } @@ -866,7 +830,7 @@ operand_6 : POINTER location /* Z.200, 6.2 */ single_assignment_action : - location GDB_ASSIGNMENT value + primitive_value GDB_ASSIGNMENT value { write_exp_elt_opcode (BINOP_ASSIGN); } @@ -961,15 +925,6 @@ length_argument : expression } ; -/* Z.200, 12.4.3 */ - -array_primitive_value : primitive_value - { - $$ = 0; - } - ; - - /* Things which still need productions... */ array_mode_name : FIXME_08 { $$ = 0; } diff --git a/gdb/ch-lang.c b/gdb/ch-lang.c index e1ac3e7602e..bfd77288631 100644 --- a/gdb/ch-lang.c +++ b/gdb/ch-lang.c @@ -280,6 +280,8 @@ static const struct op_print chill_op_print_tab[] = { {"/", BINOP_DIV, PREC_MUL, 0}, {"//", BINOP_CONCAT, PREC_PREFIX, 0}, /* FIXME: precedence? */ {"-", UNOP_NEG, PREC_PREFIX, 0}, + {"->", UNOP_IND, PREC_SUFFIX, 1}, + {"->", UNOP_ADDR, PREC_PREFIX, 0}, {NULL, 0, 0, 0} }; -- 2.30.2