private Value funcCall_rest() throws Exception
    {
        Identifier funcName = ident();
        ArrayList<Value> args = new ArrayList<Value>();
        do {
            if(scan.sym == Token.openparen) {
                scan.next();
                if(scan.sym == Token.closeparen) {
                    scan.next();
                    break;
                }
                args.add(expression());
                while(scan.sym == Token.comma) {
                    scan.next();
                    args.add(expression());
                }
                if(scan.sym == Token.closeparen) {
                    scan.next();
                    break;
                }
                throw new Exception("funcCall: no closing ')'");
            }
        } while (false);

        Instruction rval = makeCall(funcName, args);
        currentBB.addInstruction(rval);
        return rval;
    }