private Instruction makeCall(Identifier name, ArrayList<Value> args)
        throws Exception {
        if(name.equals(inputNum)) {
            if(args.size() != 0) {
                throw new Exception("Incorrect number of arguments for builtin function");
            }
            return new Read();
        }
        if(name.equals(outputNum)) {
            if(args.size() != 1) {
                throw new Exception("Incorrect number of arguments for builtin function");
            }
            return new Write(args.get(0));
        }
        if(name.equals(outputNewLine)) {
            if(args.size() != 0) {
                throw new Exception("Incorrect number of arguments for builtin function");
            }
            return new Wln();
        }
        return new Call(name, args);
    }