Package org.eclipse.imp.pdb.facts

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


  private IValue traverseSetOnce(IValue subject, CaseBlockList casesOrRules,
      DIRECTION direction, PROGRESS progress, FIXEDPOINT fixedpoint, TraverseResult tr) {
    ISet set = (ISet) subject;
    if(!set.isEmpty()){
      ISetWriter w = eval.getValueFactory().setWriter(set.getType().getElementType());
      boolean hasChanged = false;
      boolean hasMatched = false;
     
      for (IValue v : set) {
        tr.changed = false;
        tr.matched = false;
        w.insert(traverseOnce(v, casesOrRules, direction, progress, fixedpoint, tr));
        hasChanged |= tr.changed;
        hasMatched |= tr.matched;
      }
     
      tr.changed = hasChanged;
      tr.matched = hasMatched;
      return w.done();
    } else {
      return subject;
    }
  }
View Full Code Here


      throw RuntimeExceptionFactory.io(values.string(e.getMessage()), null, null);
    }
  }
 
  public ISet charsets() {
    ISetWriter w = values.setWriter();
    for (String s : Charset.availableCharsets().keySet()) {
      w.insert(values.string(s));
    }
    return w.done();
  }
View Full Code Here

  }
 
  public IValue domain(IList lst)
  //@doc{domain -- a list of all legal index values for a list}
  {
    ISetWriter w = values.setWriter();
    int len = lst.length();
    for (int i = 0; i < len; i++){
      w.insert(values.integer(i));
    }
    return w.done();
  }
View Full Code Here

    for (IValue v : lst) {
      ITuple t = (ITuple) v;
      IValueWrap key = new IValueWrap(t.get(0));
      IValue val = t.get(1);
      ISetWriter wValSet = hm.get(key);
      if(wValSet == null){
        wValSet = values.setWriter();
        hm.put(key, wValSet);
      }
      wValSet.insert(val);
    }
   
    IMapWriter w = values.mapWriter();
    for(IValueWrap v : hm.keySet()){
      w.put(v.getValue(), hm.get(v).done());
View Full Code Here

  }

  public IValue toSet(IList lst)
  //@doc{toSet -- convert a list to a set}
  {
    ISetWriter w = values.setWriter();
   
    for(IValue v : lst){
      w.insert(v);
    }
   
    return w.done();
  }
View Full Code Here

 
  public IValue domain(IMap M)
  //@doc{domain -- return the domain (keys) of a map}

  {
    ISetWriter w = values.setWriter();
    Iterator<Entry<IValue,IValue>> iter = M.entryIterator();
    while (iter.hasNext()) {
      Entry<IValue,IValue> entry = iter.next();
      w.insert(entry.getKey());
    }
    return w.done();
  }
View Full Code Here

    Iterator<Entry<IValue,IValue>> iter = M.entryIterator();
    while (iter.hasNext()) {
      Entry<IValue,IValue> entry = iter.next();
      IValue key = entry.getKey();
      IValue val = entry.getValue();
      ISetWriter wKeySet = hm.get(val);
      if(wKeySet == null){
        wKeySet = values.setWriter();
        hm.put(val, wKeySet);
      }
      wKeySet.insert(key);
    }
   
    IMapWriter w = values.mapWriter();
   
    iter = M.entryIterator();
View Full Code Here

  }

  public IValue range(IMap M)
  //@doc{range -- return the range (values) of a map}
  {
    ISetWriter w = values.setWriter();
    Iterator<Entry<IValue,IValue>> iter = M.entryIterator();
    while (iter.hasNext()) {
      Entry<IValue,IValue> entry = iter.next();
      w.insert(entry.getValue());
    }
    return w.done();
  }
View Full Code Here

  }

  public IValue toRel(IMap M)
  //@doc{toRel -- convert a map to a relation}
  {
    ISetWriter w = values.setWriter();
    Iterator<Entry<IValue,IValue>> iter = M.entryIterator();
    while (iter.hasNext()) {
      Entry<IValue,IValue> entry = iter.next();
      w.insert(values.tuple(entry.getKey(), entry.getValue()));
    }
    return w.done();
  }
View Full Code Here

        }
        return w.done();
      }
      else if (type.isSet()) {
        Type elementType = splicing ? type : type.getElementType();
        ISetWriter w = values.setWriter();
        for (IValue arg: TreeAdapter.getListASTArgs(tree)) {
          w.insert(implode(store, elementType, (IConstructor) arg, false, ctx));
        }
        return w.done();
      }
      else {
        throw new Backtrack(RuntimeExceptionFactory.illegalArgument(tree, null, null, "Cannot match list with " + type));
      }
    }
    //Changes end here
   
    if (TreeAdapter.isOpt(tree) && type.isBool()) {
      IList args = TreeAdapter.getArgs(tree);
      if (args.isEmpty()) {
        return values.bool(false);
      }
      return values.bool(true);
    }
   
    if (TreeAdapter.isOpt(tree)) {
      if (!type.isList() && !isUntypedNodeType(type)) {
        throw new Backtrack(RuntimeExceptionFactory.illegalArgument(tree, null, null, "Optional should match with a list and not " + type));
      }
      Type elementType = isUntypedNodeType(type) ? type : type.getElementType();
      IListWriter w = values.listWriter();
      for (IValue arg: TreeAdapter.getASTArgs(tree)) {
        IValue implodedArg = implode(store, elementType, (IConstructor) arg, true, ctx);
        if (implodedArg instanceof IList) {
          // splicing
          for (IValue nextArg: (IList)implodedArg) {
            w.append(nextArg);
          }
        }
        else {
          w.append(implodedArg);
        }
        // opts should have one argument (if any at all)
        break;
      }
      return w.done();
    }
   
    if (TreeAdapter.isAmb(tree)) {
      if (!type.isSet()) {
        throw new Backtrack(RuntimeExceptionFactory.illegalArgument(tree, null, null, "Ambiguous node should match with set and not " + type));
      }
      Type elementType = type.getElementType();
      ISetWriter w = values.setWriter();
      for (IValue arg: TreeAdapter.getAlternatives(tree)) {
        w.insert(implode(store, elementType, (IConstructor) arg, false, ctx));
      }
      return w.done();
    }
   
    if (ProductionAdapter.hasAttribute(TreeAdapter.getProduction(tree), Factory.Attribute_Bracket)) {
      return implode(store, type, (IConstructor) TreeAdapter.getASTArgs(tree).get(0), false, ctx);
    }
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.