* ch-exp.y: Get rid of some extra non-terminals, and move
authorPer Bothner <per@bothner.com>
Fri, 16 Sep 1994 07:28:22 +0000 (07:28 +0000)
committerPer Bothner <per@bothner.com>
Fri, 16 Sep 1994 07:28:22 +0000 (07:28 +0000)
their rules into primitive_value.
* ch-lang.c (chill_op_print_tab):  Add '->'.
* expprint.c (print_subexp):  Recognize unary postfix operator.

gdb/ChangeLog
gdb/ch-exp.y
gdb/ch-lang.c

index ae2d10d8df635d59ca3b22db5733c06b5bccf0a6..764704ae2d6be8e851227b5485ecbb39bd980463 100644 (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.
index dc46d7967624f8c6edb9b7f86b09dc2bf887be04..b7a0b5ec8c1ff82f354061a83446a96029ee224f 100644 (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; }
index e1ac3e7602e9105ec8e7dde990828717cd88193c..bfd7728863169521f4d7c00f0a5e23e64ffa8560 100644 (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}
 };
 
This page took 0.03103 seconds and 4 git commands to generate.