diff options
author | Per Bothner <per@bothner.com> | 1994-09-16 07:28:22 +0000 |
---|---|---|
committer | Per Bothner <per@bothner.com> | 1994-09-16 07:28:22 +0000 |
commit | bdef6b60f3f6c9e44b2a5c66a95466e82be9a21e (patch) | |
tree | 2987b7919de30ef519069a7b8e9d10e8bb17f451 /gdb/ch-exp.y | |
parent | 4b4e568a4cecf2beda448b93e2f9c41458166aba (diff) | |
download | gdb-bdef6b60f3f6c9e44b2a5c66a95466e82be9a21e.zip gdb-bdef6b60f3f6c9e44b2a5c66a95466e82be9a21e.tar.gz gdb-bdef6b60f3f6c9e44b2a5c66a95466e82be9a21e.tar.bz2 |
* 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.
Diffstat (limited to 'gdb/ch-exp.y')
-rw-r--r-- | gdb/ch-exp.y | 91 |
1 files changed, 23 insertions, 68 deletions
diff --git a/gdb/ch-exp.y b/gdb/ch-exp.y index dc46d79..b7a0b5e 100644 --- a/gdb/ch-exp.y +++ b/gdb/ch-exp.y @@ -247,18 +247,14 @@ yyerror PARAMS ((char *)); %token <ivar> GDB_VARIABLE /* Convenience variable */ %token <voidval> GDB_ASSIGNMENT /* Assign value to somewhere */ -%type <voidval> location %type <voidval> access_name %type <voidval> primitive_value -%type <voidval> location_contents %type <voidval> value_name %type <voidval> literal %type <voidval> tuple %type <voidval> value_string_element %type <voidval> value_string_slice -%type <voidval> value_array_element %type <voidval> value_array_slice -%type <voidval> value_structure_field %type <voidval> expression_conversion %type <voidval> value_procedure_call %type <voidval> value_built_in_routine_call @@ -290,7 +286,6 @@ yyerror PARAMS ((char *)); %type <voidval> left_element %type <voidval> right_element %type <voidval> slice_size -%type <voidval> array_primitive_value %type <voidval> expression_list %type <voidval> lower_element %type <voidval> 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; } |