* 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.
This commit is contained in:
Per Bothner 1994-09-16 07:28:22 +00:00
parent 4b4e568a4c
commit bdef6b60f3
3 changed files with 32 additions and 68 deletions

View File

@ -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.

View File

@ -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; }

View File

@ -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}
};