Exemple #1
0
 private IValue read(Type resultType, ISourceLocation loc, IMap options, IEvaluatorContext ctx) {
   setOptions(options);
   Reader reader = null;
   try {
     reader = ctx.getResolverRegistry().getCharacterReader(loc.getURI());
     List<Record> records = loadRecords(reader);
     if (resultType == null) {
       resultType = inferType(records, ctx);
       ctx.getStdOut().println("readCSV inferred the relation type: " + resultType);
       ctx.getStdOut().flush();
     } else if (header) {
       records.remove(0);
     }
     return buildCollection(resultType, records, ctx);
   } catch (IOException e) {
     throw RuntimeExceptionFactory.io(
         values.string(e.getMessage()), ctx.getCurrentAST(), ctx.getStackTrace());
   } finally {
     if (reader != null) {
       try {
         reader.close();
       } catch (IOException e) {
         throw RuntimeExceptionFactory.io(
             values.string(e.getMessage()), ctx.getCurrentAST(), ctx.getStackTrace());
       }
     }
   }
 }
  public static IConstructor loadForRascal(IValueFactory vf, IString src, ISourceLocation loc) {
    IGTD<IConstructor, IConstructor, ISourceLocation> gtd = new ClojureParser();
    IConstructor file =
        (IConstructor)
            gtd.parse(
                START_SORT,
                loc.getURI(),
                src.getValue().toCharArray(),
                new DefaultNodeFlattener<IConstructor, IConstructor, ISourceLocation>(),
                new UPTRNodeFactory());

    String path = loc.getURI().getPath();
    IConstructor[] fileRef = new IConstructor[] {file};

    // ignore the clojure result
    ISetWriter errors = vf.setWriter(Message.Message);
    new UPTRCompiler(vf, errors).loadPT(fileRef, path, new File(path).getName());

    // return the updated parse tree.
    return fileRef[0].setAnnotation("messages", errors.done());
  }
Exemple #3
0
 public void writeTextJSonFile(ISourceLocation loc, IValue value, IEvaluatorContext ctx) {
   OutputStream out = null;
   try {
     out = ctx.getResolverRegistry().getOutputStream(loc.getURI(), false);
     new JSonWriter().write(value, new OutputStreamWriter(out, "UTF8"));
   } catch (IOException e) {
     throw RuntimeExceptionFactory.io(values.string(e.getMessage()), null, null);
   } finally {
     if (out != null) {
       try {
         out.close();
       } catch (IOException ioex) {
         throw RuntimeExceptionFactory.io(values.string(ioex.getMessage()), null, null);
       }
     }
   }
 }
Exemple #4
0
  @Override
  public String getMessage() {
    if (loc != null) {
      URI url = loc.getURI();

      return (url.getScheme().equals("file") ? (url.getAuthority() + url.getPath()) : url)
          + ":"
          + loc.getBeginLine()
          + ","
          + loc.getBeginColumn()
          + ": "
          + super.getMessage();
    }

    // TODO remove once all errors have locations
    return super.getMessage();
  }
Exemple #5
0
  public void report() {

    List<Map.Entry<AbstractAST, Count>> sortedData = sortData();

    int maxURL = 1;
    long nTicks = 0;

    for (Map.Entry<AbstractAST, Count> e : sortedData) {
      URI url = e.getKey().getLocation().getURI();
      int sz = url.toString().length();
      if (sz > maxURL) maxURL = sz;
      nTicks += e.getValue().getTicks();
    }
    PrintWriter out = eval.getStdOut();
    String URLFormat = "%" + maxURL + "s";
    out.printf(
        "PROFILE: %d data points, %d ticks, tick = %d milliSecs\n",
        data.size(), nTicks, resolution);
    out.printf(URLFormat + "%11s%8s%9s  %s\n", " Source File", "Lines", "Ticks", "%", "Source");

    for (Map.Entry<AbstractAST, Count> e : sortedData) {
      ISourceLocation L = e.getKey().getLocation();

      String uri = L.getURI().toString();
      String filePrefix = "file://";
      if (uri.startsWith(filePrefix)) uri = uri.substring(filePrefix.length());

      int bgn = L.getBeginLine();
      int end = L.getEndLine();
      String range = (end == bgn) ? Integer.toString(bgn) : bgn + ".." + end;

      int ticks = e.getValue().getTicks();
      double perc = (ticks * 100.0) / nTicks;

      String source =
          String.format(
              "%-30.30s",
              e.getKey().toString().replaceFirst("^[\\s]+", "").replaceAll("[\\s]+", " "));

      out.printf(URLFormat + "%11s%8d%8.1f%%  %s\n", uri, range, ticks, perc, source);
    }
    // Make sure that our output is seen:
    out.flush();
  }
Exemple #6
0
 public IValue readTextJSonFile(IValue type, ISourceLocation loc, IEvaluatorContext ctx) {
   // TypeStore store = new TypeStore();
   TypeStore store = ctx.getCurrentEnvt().getStore();
   Type start = new TypeReifier(ctx.getValueFactory()).valueToType((IConstructor) type, store);
   Reader read = null;
   try {
     read = ctx.getResolverRegistry().getCharacterReader(loc.getURI());
     return new JSonReader().read(values, store, start, read);
   } catch (IOException e) {
     throw RuntimeExceptionFactory.io(values.string(e.getMessage()), null, null);
   } finally {
     if (read != null) {
       try {
         read.close();
       } catch (IOException ioex) {
         throw RuntimeExceptionFactory.io(values.string(ioex.getMessage()), null, null);
       }
     }
   }
 }
Exemple #7
0
  public IValue readTextATermFile(IValue type, ISourceLocation loc, IEvaluatorContext ctx) {
    TypeStore store = new TypeStore();
    Type start = new TypeReifier(ctx.getValueFactory()).valueToType((IConstructor) type, store);

    InputStream in = null;
    try {
      in = ctx.getResolverRegistry().getInputStream(loc.getURI());
      return new ATermReader().read(values, store, start, in);
    } catch (IOException e) {
      throw RuntimeExceptionFactory.io(values.string(e.getMessage()), null, null);
    } finally {
      if (in != null) {
        try {
          in.close();
        } catch (IOException ioex) {
          throw RuntimeExceptionFactory.io(values.string(ioex.getMessage()), null, null);
        }
      }
    }
  }
Exemple #8
0
  public void write(IValue rel, ISourceLocation loc, IEvaluatorContext ctx) {

    OutputStream out = null;

    Type paramType = ctx.getCurrentEnvt().getTypeBindings().get(types.parameterType("T"));
    if (!paramType.isRelation() && !paramType.isListRelation()) {
      throw RuntimeExceptionFactory.illegalTypeArgument(
          "A relation type is required instead of " + paramType,
          ctx.getCurrentAST(),
          ctx.getStackTrace());
    }

    try {
      boolean isListRel = rel instanceof IList;
      out = ctx.getResolverRegistry().getOutputStream(loc.getURI(), false);
      ISet irel = null;
      IList lrel = null;
      if (isListRel) {
        lrel = (IList) rel;
      } else {
        irel = (ISet) rel;
      }

      int nfields = isListRel ? lrel.asRelation().arity() : irel.asRelation().arity();
      if (header) {
        for (int i = 0; i < nfields; i++) {
          if (i > 0) out.write(separator);
          String label = paramType.getFieldName(i);
          if (label == null || label.isEmpty()) label = "field" + i;
          writeString(out, label);
        }
        out.write('\n');
      }
      String separatorAsString = new String(Character.toChars(separator));
      for (IValue v : (isListRel ? lrel : irel)) {
        ITuple tup = (ITuple) v;
        int sep = 0;
        for (IValue w : tup) {
          if (sep == 0) sep = separator;
          else out.write(sep);
          if (w.getType().isString()) {
            String s = ((IString) w).getValue();

            if (s.contains(separatorAsString)
                || s.contains("\n")
                || s.contains("\r")
                || s.contains("\"")) {
              s = s.replaceAll("\"", "\"\"");
              out.write('"');
              writeString(out, s);
              out.write('"');
            } else writeString(out, s);
          } else {
            writeString(out, w.toString());
          }
        }
        out.write('\n');
      }
      out.flush();
      out.close();
    } catch (IOException e) {
      throw RuntimeExceptionFactory.io(values.string(e.getMessage()), null, null);
    } finally {
      if (out != null) {
        try {
          out.flush();
          out.close();
        } catch (IOException ioex) {
          throw RuntimeExceptionFactory.io(values.string(ioex.getMessage()), null, null);
        }
      }
    }
  }
 public static IResource getResourceHandler(ISourceLocation uri) {
   for (String key : resourceHandlers.keySet()) {
     if (uri.getURI().getHost().equals(key)) return resourceHandlers.get(key);
   }
   return null; // TODO: Throw here!
 }