Index: imcc/imcc.y =================================================================== RCS file: /cvs/public/parrot/imcc/imcc.y,v retrieving revision 1.125 diff -u -r1.125 imcc.y --- imcc/imcc.y 11 Mar 2004 16:37:56 -0000 1.125 +++ imcc/imcc.y 12 Mar 2004 08:33:49 -0000 @@ -272,7 +272,7 @@ %type key keylist _keylist %type vars _vars var_or_i _var_or_i label_op %type pasmcode pasmline pasm_inst -%type pasm_args lhs +%type pasm_args %type targetlist arglist %token VAR %token LINECOMMENT @@ -784,7 +784,7 @@ { $$ = MK_I(interp, cur_unit, "bxor", 3, $1, $3, $5); } | target '=' var '[' keylist ']' { $$ = iINDEXFETCH(interp, cur_unit, $1, $3, $5); } - | var '[' keylist ']' '=' var + | target '[' keylist ']' '=' var { $$ = iINDEXSET(interp, cur_unit, $1, $3, $6); } | target '=' NEW classname COMMA var { $$ = iNEW(interp, cur_unit, $1, $4, $6, 1); } @@ -850,9 +850,9 @@ if ($1->set != 'P') fataly(1, sourcefile, line, "Sub isn't a PMC"); } - | lhs ptr IDENTIFIER { cur_obj = $1; $$ = mk_sub_address($3); } - | lhs ptr STRINGC { cur_obj = $1; $$ = mk_const($3, 'S'); } - | lhs ptr target { cur_obj = $1; $$ = $3; } + | target ptr IDENTIFIER { cur_obj = $1; $$ = mk_sub_address($3); } + | target ptr STRINGC { cur_obj = $1; $$ = mk_const($3, 'S'); } + | target ptr target { cur_obj = $1; $$ = $3; } ; ptr: POINTY { $$=0; } @@ -916,11 +916,6 @@ | reg ; -lhs: - VAR /* duplicated because of reduce conflict */ - | reg - ; - vars: /* empty */ { $$ = NULL; } | _vars { $$ = $1; } @@ -933,7 +928,7 @@ _var_or_i: var_or_i { regs[nargs++] = $1; } - | lhs '[' keylist ']' + | target '[' keylist ']' { regs[nargs++] = $1; keyvec |= KEY_BIT(nargs); @@ -952,8 +947,7 @@ ; var: - VAR - | reg + target | const ;