Package org.eclipse.imp.pdb.facts

Examples of org.eclipse.imp.pdb.facts.ISetWriter


          throw new CompilerError("expected to find a holeType, but did not: " + tree);
        }

        @Override
        public IConstructor visitTreeAmb(IConstructor arg)  {
          ISetWriter w = vf.setWriter();
          for (IValue elem : TreeAdapter.getAlternatives(arg)) {
            w.insert(elem.accept(this));
          }
          return arg.set("alternatives", w.done());
        }
      });
    }
View Full Code Here


    return result;
  }

  private IValue readSet(Set<?> o, Set<Class<?>> includes, Map<Object, IValue> cache, Stack<Object> stack) {
    IValue result;
    ISetWriter w = vf.setWriter();

    for (Object e : o) {
      IValue elem = readObject(e, includes, cache, stack);

      if (elem != null) {
        w.insert(elem);
      }
    }

    result = w.done();
    return result;
  }
View Full Code Here

      for (int i = terms.length - 1; i >= 0; i--) {
        w.insert(terms[i]);
      }
      return w.done();
    } else if (base.isRelation()) {
      ISetWriter w = vf.setWriter(expected.getElementType());
      w.insert(terms);
      return w.done();

    } else if (base.isSet()) {
      ISetWriter w = vf.setWriter(expected.getElementType());
      w.insert(terms);
      return w.done();
    } else if(base.isMap()){
      //Type tt = expected.getElementType();
      IMapWriter w = vf.mapWriter(expected); //tt.getFieldType(0), tt.getFieldType(1));
      for (int i = terms.length - 1; i >= 0; i--) {
        w.put(((ITuple) terms[i]).get(0), ((ITuple)terms[i]).get(1));
      }
      return w.done();
    }
    throw new FactParseError("Unexpected type " + expected,
        reader.getPosition());
  }
View Full Code Here

  }

  @SuppressWarnings("deprecation")
  @Override
  public IValue visitSet(Type type) throws IOException {
    ISetWriter w = vf.setWriter(elementType(type));
    List l = (List)stack.peek();
    for (Object e: l) {
      stack.push(e);
      w.insert(read(elementType(type)));
      stack.pop();
    }
    return w.done();
  }
View Full Code Here

      public IValue visitRelation(ISet o) throws RuntimeException {
        List<IValue> elements = new ArrayList<IValue>(o.size());
        for (IValue e : o) {
          elements.add(e.accept(this));
        }
        ISetWriter writer = vf.relationWriter(calcLub(elements));
        writer.insertAll(elements);
        return writer.done();
      }

      @Override
      public IValue visitListRelation(IList o) throws RuntimeException {
        List<IValue> elements = new ArrayList<IValue>(o.length());
        for (IValue e : o) {
          elements.add(e.accept(this));
        }
        IListWriter writer = vf.listRelationWriter(calcLub(elements));
        writer.appendAll(elements);
        return writer.done();
      }

      @Override
      public IValue visitSet(ISet o) throws RuntimeException {
        List<IValue> elements = new ArrayList<IValue>(o.size());
        for (IValue e : o) {
          elements.add(e.accept(this));
        }
        ISetWriter writer = vf.setWriter(calcLub(elements));
        writer.insertAll(elements);
        return writer.done();
      }
      @Override
      public IValue visitTuple(ITuple o) throws RuntimeException {
        IValue[] elements = new IValue[o.arity()];
        Type[] types = new Type[o.arity()];
        for (int i = 0; i < elements.length; i++) {
          elements[i] = o.get(i).accept(this);
          types[i] = elements[i].getType();
        }

        return vf.tuple(tf.tupleType(types), elements);
      }

      @Override
      public IValue visitNode(INode o) throws RuntimeException {
        IValue[] children = new IValue[o.arity()];
        for (int i = 0; i < children.length; i++) {
          children[i] = o.get(i).accept(this);
        }
        if (o.mayHaveKeywordParameters()) {
          IWithKeywordParameters<? extends INode> okw = o.asWithKeywordParameters();
          Map<String, IValue> oldKwParams = okw.getParameters();
          Map<String, IValue> kwParams = new HashMap<>(oldKwParams.size());
          for (String key : oldKwParams.keySet()) {
            kwParams.put(key, oldKwParams.get(key).accept(this));

          }
          return vf.node(o.getName(), children, kwParams);
        }

        return vf.node(o.getName(), children);
      }

      @Override
      public IValue visitMap(IMap o) throws RuntimeException {
        Iterator<Entry<IValue,IValue>> entries = o.entryIterator();
        Map<IValue, IValue> newEntries = new HashMap<>(o.size());
        while (entries.hasNext()) {
          Entry<IValue, IValue> ent = entries.next();
          newEntries.put(ent.getKey().accept(this), ent.getValue().accept(this));
        }

        IMapWriter writer = vf.mapWriter(calcLub(newEntries.keySet()), calcLub(newEntries.values()));
        writer.putAll(newEntries);
        return writer.done();
      }

      @Override
      public IValue visitConstructor(IConstructor o)
          throws RuntimeException {
View Full Code Here

  private ISet edges = vf.relation(tf.tupleType(tf.stringType(),
      tf.stringType(), tf.stringType()));
  private int idNum = 0;

  public ITuple getGraph() {
    ISetWriter sw = vf.setWriter(tf.tupleType(tf.stringType(),
        tf.stringType(), tf.stringType(), tf.integerType()));
    sw.insertAll(ids.values());
    return vf.tuple(sw.done(), edges);
  }
View Full Code Here

    if (constant) {
      return makeResult(type, node, eval);
    }
   
    // TODO: add filtering semantics, function calling
    ISetWriter w = eval.getValueFactory().setWriter(Factory.Tree);
    for (org.rascalmpl.ast.Expression a : alts) {
      w.insert(a.interpret(eval).getValue());
    }
    return makeResult(type, eval.getValueFactory().constructor(Factory.Tree_Amb, (IValue) w.done()), eval);
  }
View Full Code Here

  public static ISet getSyntax(IConstructor tree) {
    return get(tree, "syntax");
  }
 
  private static ISet get(IConstructor tree, String type) {
    ISetWriter set = vf.setWriter();
    IConstructor header = TreeAdapter.getArg(tree, "header");
    IConstructor imports = TreeAdapter.getArg(header, "imports");
   
    for (IValue imp : TreeAdapter.getListASTArgs(imports)) {
      String cons = TreeAdapter.getConstructorName((IConstructor) imp);
      if (cons.equals(type)) {
        set.insert(imp);
      }
    }
   
    return set.done();
  }
View Full Code Here

        java.lang.String name = fields[0];
        //System.err.println(fields[0] + "|" + fields[1] + "|" + fields[2]);
        if (!table.containsKey(name)) {
          table.put(name, values.relationWriter(tupleType));
        }
        ISetWriter rw = table.get(name);
        rw.insert(values.tuple(values.string(fields[1]), values.string(fields[2])));
        line = bufRead.readLine();
      }
      bufRead.close();

    } catch (IOException e) {
View Full Code Here

          ctx.getCurrentAST(), ctx.getStackTrace());
    }
   
    Type elem1Type = resultType.getFieldType(0);
    Type elem2Type = resultType.getFieldType(1);
    ISetWriter rw = values.relationWriter(resultType.getElementType());
    String rname = relName.getValue();

    try (Reader reader = ctx.getResolverRegistry().getCharacterReader(loc.getURI())) {
      java.lang.String line = readLine(reader);

      while (!line.isEmpty()) {
        java.lang.String[] fields = line.split("\\s+");
        java.lang.String name = fields[0];
        if(name.equals(rname)){
          //System.err.println(fields[0] + "|" + fields[1] + "|" + fields[2]);
          IValue v1 = getElementAsTypedValue(fields[1], elem1Type);
          IValue v2 = getElementAsTypedValue(fields[2], elem2Type);
          rw.insert(values.tuple(v1, v2));
        }
        line = readLine(reader);
      }
      reader.close();

    } catch (IOException e) {
      throw RuntimeExceptionFactory.io(values.string(e.getMessage()), null, null);
    }
   
    return rw.done();
  }
View Full Code Here

TOP

Related Classes of org.eclipse.imp.pdb.facts.ISetWriter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.