+ current_type, $2.ptr, 0);
+ }
+ }
+ ;
+
+
+exp : field_exp name
+ { write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+ write_exp_string (pstate, $2);
+ write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+ search_field = 0;
+ if (current_type)
+ {
+ while (TYPE_CODE (current_type)
+ == TYPE_CODE_PTR)
+ current_type =
+ TYPE_TARGET_TYPE (current_type);
+ current_type = lookup_struct_elt_type (
+ current_type, $2.ptr, 0);
+ }
+ }
+ ;
+exp : field_exp name COMPLETE
+ { mark_struct_expression (pstate);
+ write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+ write_exp_string (pstate, $2);
+ write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+ ;
+exp : field_exp COMPLETE
+ { struct stoken s;
+ mark_struct_expression (pstate);
+ write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
+ s.ptr = "";
+ s.length = 0;
+ write_exp_string (pstate, s);
+ write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+ ;
+