aboutsummaryrefslogtreecommitdiff
path: root/gdb/ch-exp.y
diff options
context:
space:
mode:
authorPer Bothner <per@bothner.com>1994-09-16 07:28:22 +0000
committerPer Bothner <per@bothner.com>1994-09-16 07:28:22 +0000
commitbdef6b60f3f6c9e44b2a5c66a95466e82be9a21e (patch)
tree2987b7919de30ef519069a7b8e9d10e8bb17f451 /gdb/ch-exp.y
parent4b4e568a4cecf2beda448b93e2f9c41458166aba (diff)
downloadfsf-binutils-gdb-bdef6b60f3f6c9e44b2a5c66a95466e82be9a21e.zip
fsf-binutils-gdb-bdef6b60f3f6c9e44b2a5c66a95466e82be9a21e.tar.gz
fsf-binutils-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.y91
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; }