private Update update() {
		switch (peekType()) {
		case MEM: {
			consume(MEM);
			consume(LBRACKET);
			Expression idx = expression();
			consume(RBRACKET);
			consume(ASSIGN);
			Expression val = expression();
			return new Update(idx, val);
		}
		case ABV_MEMSIZE:
		case ABV_DEFENSE:
		case ABV_OFFENSE:
		case ABV_SIZE:
		case ABV_ENERGY:
		case ABV_PASS:
		case ABV_TAG:
		case ABV_POSTURE: {
			int type = peekType();
			consume(type);
			Expression idx = new NumberLiteral(memoryLocation(type));
			consume(ASSIGN);
			Expression val = expression();
			return new Update(idx, val);
		}
		default:
			throw new SyntaxError(peek());
		}
	}