@x | POINTER_TYPE { if (last_type >= 0) sym_table[last_type].var_not_needed = true; } @y | POINTER_TYPE { if (last_type >= 0) sym_table[last_type].var_not_needed = false; } @z @x POINTER_TYPE: '^' type_id_tok {if (last_type >= 0) { sym_table[last_type].var_not_needed = sym_table[l_s].var_not_needed; sym_table[last_type].upper = sym_table[l_s].upper; sym_table[last_type].upper_sym = sym_table[l_s].upper_sym; sym_table[last_type].val = sym_table[l_s].val; sym_table[last_type].val_sym = sym_table[l_s].val_sym; } my_output(last_id); my_output("*"); } ; @y POINTER_TYPE: '^' type_id_tok {if (last_type >= 0) { sym_table[last_type].var_not_needed = sym_table[l_s].var_not_needed; sym_table[last_type].upper = sym_table[l_s].upper; sym_table[last_type].upper_sym = sym_table[l_s].upper_sym; sym_table[last_type].val = sym_table[l_s].val; sym_table[last_type].val_sym = sym_table[l_s].val_sym; } my_output(last_id); my_output("*"); } | '^' undef_id_tok /* HH for Isitex */ {if (last_type >= 0) { sym_table[last_type].var_not_needed = sym_table[l_s].var_not_needed; sym_table[last_type].upper = sym_table[l_s].upper; sym_table[last_type].upper_sym = sym_table[l_s].upper_sym; sym_table[last_type].val = sym_table[l_s].val; sym_table[last_type].val_sym = sym_table[l_s].val_sym; } my_output(last_id); my_output("*"); } ; @z @x VARIABLE: var_id_tok { if (strcmp(last_id, "mem") == 0) uses_mem = 1; else if (strcmp(last_id, "eqtb") == 0) uses_eqtb = 1; if (sym_table[l_s].var_formal) (void) putchar('*'); my_output(last_id); $$ = ex_32; } VAR_DESIG_LIST | var_id_tok { if (sym_table[l_s].var_formal) (void) putchar('*'); my_output(last_id); $$ = ex_32; } ; @y VARIABLE: var_id_tok { if (strcmp(last_id, "mem") == 0) uses_mem = 1; else if (strcmp(last_id, "eqtb") == 0) uses_eqtb = 1; if (sym_table[l_s].var_formal) { (void) putchar('('); (void) putchar('*'); my_output(last_id); (void) putchar(')'); } else my_output(last_id); $$ = ex_32; } VAR_DESIG_LIST | var_id_tok '^' '.' /* HH for Isitex */ { if (sym_table[l_s].var_formal) { (void) putchar('('); (void) putchar('*'); my_output(last_id); (void) putchar(')'); } else my_output(last_id); (void) putchar('-'); (void) putchar('>'); $$ = ex_32; } FIELD_VARIABLE | var_id_tok '^' { (void) putchar('('); (void) putchar('*'); if (sym_table[l_s].var_formal) { (void) putchar('('); (void) putchar('*'); my_output(last_id); (void) putchar(')'); } else my_output(last_id); (void) putchar(')'); $$ = ex_32; } | var_id_tok { if (sym_table[l_s].var_formal) { (void) putchar('('); (void) putchar('*'); my_output(last_id); (void) putchar(')'); } else my_output(last_id); $$ = ex_32; } ; FIELD_VARIABLE: field_id_tok { my_output(last_id); } VAR_DESIG_LIST | field_id_tok '^' '.' { my_output(last_id); (void) putchar('-'); (void) putchar('>'); } FIELD_VARIABLE | field_id_tok { my_output(last_id); } ; @z