- if (b.get(b.size() - 1) != GET)
- throw new ParserException("prefixed increment/decrement can only be performed on a valid assignment target");
- b.set(b.size() - 1, tok, new Boolean(true));
+ int prev = b.size - 1;
+ if (b.get(prev) == GET && b.getArg(prev) != null)
+ b.set(prev, LITERAL, b.getArg(prev));
+ else if(b.get(prev) == GET)
+ b.pop();
+ else
+ throw pe("prefixed increment/decrement can only be performed on a valid assignment target");
+ b.add(parserLine, GET_PRESERVE, Boolean.TRUE);
+ b.add(parserLine, LITERAL, JS.N(1));
+ b.add(parserLine, tok == INC ? ADD : SUB, JS.N(2));
+ b.add(parserLine, PUT, null);
+ b.add(parserLine, SWAP, null);
+ b.add(parserLine, POP, null);