Examples of ISet


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

          return antiquotes.get(TreeAdapter.yield(tree)).asAnnotatable().setAnnotation("holeType", type);
        }
       
        private IConstructor retrieveHoleType(IConstructor tree) {
          IConstructor prod = TreeAdapter.getProduction(tree);
          ISet attrs = ProductionAdapter.getAttributes(prod);

          for (IValue attr : attrs) {
            if (((IConstructor) attr).getConstructorType() == Factory.Attr_Tag) {
              IValue arg = ((IConstructor) attr).get(0);
             
View Full Code Here

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

 
  /**
   * @return the remaining subject set elements that are available to be matched
   */
  private ISet available(){
    ISet avail = availableSetElements;
    for(int j = 0; j < currentVar; j++){
      if(isSetVar(j)){
        if(varVal[j] != null)
          avail = avail.subtract((ISet)varVal[j]);
      } else {
        if(varVal[j] != null)
          avail = avail.delete(varVal[j]);
      }
    }
    return avail;
  }
View Full Code Here

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

          }
          else {
            // Var #i is not a set variable.
            if(availableSetElements.getType().isSet()){
              // Var #i should match single element in elements
              ISet set = (ISet) availableSetElements;
              assert set.size() == 1;
              varVal[0] = elem = set.iterator().next();
            } else {
              varVal[0] = elem = availableSetElements;
              //varVal[i] = ctx.getValueFactory().set(elem.getType()).insert(elem); // TODO: Should this be  a set?
            }
          }

          varPat[0].initMatch(ResultFactory.makeResult(elem.getType(), elem, ctx));
          hasNext = varPat[0].hasNext();
        }
      }
     
      currentVar = 0;
      if(!makeGen(currentVar, availableSetElements)){
        return false;
      }
    } else {
      currentVar = nVar - 1;
    }
    hasNext = true;

    if(debug)System.err.println("\nStart assigning Vars for " + this + ":= " + subject);

    if (patternSize == 1 && (isSetVar(0) || availableSetElements.size() == 1)) {
      if (varPat[0].hasNext() && varPat[0].next()) {
        return true;
      }
     
      return false;
    }
   
    main:
    do {
      if (ctx.isInterrupted()) {
        throw new InterruptException(ctx.getStackTrace(), ctx.getCurrentAST().getLocation());
      }
     
      if(debug)System.err.println("\n=== MAIN: Pattern = " + this ":= " + subject + "\ncurrentVar[" + currentVar + "]=" + varName[currentVar]);
      if(debug)printVars();
      IValue v = null;
      boolean b = false;
      if(isNested[currentVar]){
        if(varPat[currentVar].hasNext()){
          b = varPat[currentVar].next();
          if(b)
            v = varVal[currentVar];
        } else if(varGen[currentVar].hasNext()){
          v = (IValue) varGen[currentVar].next();
          Result<IValue> r = ResultFactory.makeResult(v.getType(), v, ctx);
          varPat[currentVar].initMatch(r);
          b = varPat[currentVar].next();
          if(b)
            varVal[currentVar] = v;
        }
      } else if(isSetVar[currentVar]){
          if(varGen[currentVar].hasNext()){
            v = (IValue) varGen[currentVar].next();
            Result<IValue> r = ResultFactory.makeResult(v.getType().lub(setSubjectType), v, ctx);
            varPat[currentVar].initMatch(r);
            b = varPat[currentVar].next();
            if(b){
              varVal[currentVar] = v;
              ctx.getCurrentEnvt().storeVariable(varName[currentVar], r);
              if(debug)System.err.println("Store in " + varName[currentVar] + ": " + r + " / " + v + " / " + v.getType() + " / " +
              ctx.getCurrentEnvt().getVariable(varName[currentVar]).getType());
            }
          }
      } else if(isBinding[currentVar]){
        if(varGen[currentVar].hasNext()){
          v = (IValue) varGen[currentVar].next();
         
          Result<IValue> r = ResultFactory.makeResult(v.getType(), v, ctx);
          varPat[currentVar].initMatch(r);
          b = varPat[currentVar].next();
          if(b){
            varVal[currentVar] = v;
            ctx.getCurrentEnvt().storeVariable(varName[currentVar], r);
            if(debug)System.err.println("Store in " + varName[currentVar] + ": " + r + " / " + v + " / " + v.getType() + " / " +
                ctx.getCurrentEnvt().getVariable(varName[currentVar]).getType());
          }
        }
      } else   if(varPat[currentVar] instanceof QualifiedNamePattern && ((QualifiedNamePattern)varPat[currentVar] ).isAnonymous()){
          if(varGen[currentVar].hasNext()){
            v = (IValue) varGen[currentVar].next();
            Result<IValue> r = ResultFactory.makeResult(v.getType(), v, ctx);
            varPat[currentVar].initMatch(r);
            b = varPat[currentVar].next();
            if(b){
              varVal[currentVar] = v;
            }
          }
      } else if(!isBinding[currentVar] && (varPat[currentVar] instanceof QualifiedNamePattern || varPat[currentVar] instanceof TypedVariablePattern&& varGen[currentVar].hasNext()){
          v = (IValue) varGen[currentVar].next();
          Result<IValue> r = ResultFactory.makeResult(v.getType(), v, ctx);
          varPat[currentVar].initMatch(r);
          b = varPat[currentVar].next();
          System.err.println("Try match " + varName[currentVar] + ": " + r + " / " + v + " / " + v.getType());
          if(b){
            varVal[currentVar] = v;
            System.err.println("Matches " + varName[currentVar] + ": " + r + " / " + v + " / " + v.getType());
          }
       
      } else {
       
        System.err.println("CANNOT HANDLE THIS 2");
      }
     
      //if(debug) System.err.println("currentVar[" + currentVar + "] = " +  varName[currentVar] + "; v = " + v + "; type: " + v.getType() + "; matchPatternElement = " + b);
      if(b){
        currentVar++;
        ISet avail = available();
        if(currentVar <= nVar - 1){
          if(!makeGen(currentVar, avail)){
            varGen[currentVar] = null;
            currentVar--;
          }
          continue main;
        } else {
          if(!avail.isEmpty()){
            if(debug)System.err.println("nomatch: currentVar = " + currentVar + " avail = " + available());
            currentVar--;
            continue main;
          }
          hasNext = unexploredAlternatives();
View Full Code Here

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

    }
    if (isSeq(symbol)) {
      return "(" + toString(getSymbols(symbol), ' ', withLayout) + ")";
    }
    if (isAlt(symbol)) {
      ISet alts = getAlternatives(symbol);
      StringBuilder b = new StringBuilder();
      b.append("(");
      boolean first = true;
      for (IValue elem : alts) {
        if (!first) {
          first = false;
          b.append(" | ");
        }
        b.append(toString((IConstructor) elem, withLayout));
      }
      b.append(")");
      return b.toString();
    }
    if (isLayouts(symbol)) {
      return withLayout ? "layout[" + symbol.get("name") + "]" : "";
    }
    if (isLiteral(symbol)) {
      return '"' + ((IString) symbol.get("string")).getValue() + '"';
    }
    if (isCILiteral(symbol)) {
      return '\'' + ((IString) symbol.get("string")).getValue() + '\'';
    }
    if (isParameterizedSort(symbol) || isParameterizedLex(symbol)) {
      StringBuilder b = new StringBuilder();
      b.append(getName(symbol));
      IList params = (IList) symbol.get("parameters");
      b.append('[');
      b.append(toString(params, ',', withLayout));
      b.append(']');
      return b.toString();
    }
    if (isStartSort(symbol)) {
      return "start[" + toString(getStart(symbol), withLayout) + "]";
    }
    if (isParameter(symbol)) {
      return "&" + getName(symbol);
    }
   
    if (isInt(symbol) || isStr(symbol) || isReal(symbol) || isBool(symbol) || isRat(symbol)
        || isNode(symbol) || isValue(symbol) || isVoid(symbol) || isNum(symbol) || isDatetime(symbol) || isLoc(symbol)) {
      return symbol.getName();
    }
   
    if (isSet(symbol) || isList(symbol) || isBag(symbol) || isReifiedType(symbol)) {
      return symbol.getName() + "[" + toString((IConstructor) symbol.get("symbol"), withLayout) + "]";
    }
   
    if (isRel(symbol) || isListRel(symbol) || isTuple(symbol)) {
      StringBuilder b = new StringBuilder();
      b.append(symbol.getName());
      IList symbols = (IList) symbol.get("symbols");
      b.append('[');
      b.append(toString(symbols, ',', withLayout));
      b.append(']');
      return b.toString();
    }
   
    if (isMap(symbol)) {
      return symbol.getName() + "[" + toString((IConstructor) symbol.get("from"), withLayout) + "," + toString((IConstructor) symbol.get("to"), withLayout) + "]";
    }
   
    if (isConditional(symbol)) {
      ISet conditions = getConditions(symbol);
      StringBuilder b = new StringBuilder();
      // first prefix conditions
      for (IValue elem : conditions) {
        IConstructor cond = (IConstructor) elem;
        switch (cond.getConstructorType().getName()) {
View Full Code Here

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

   
    /**
     * @return <code>true</code> if has breakable tag, otherwise <code>false</code>
     */
    private static boolean hasBreakableAttributeTag(IConstructor production) {
      ISet attributes = ProductionAdapter.getAttributes(production);
      return attributes != null
          && attributes.contains(VF.constructor(Factory.Attr_Tag,VF.node("breakable")));
    }   
View Full Code Here

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

      return attributes != null
          && attributes.contains(VF.constructor(Factory.Attr_Tag,VF.node("breakable")));
    }   
     
    private static String[] getChildProductionNamesForPushDown(IConstructor production) {
      ISet attributes = ProductionAdapter.getAttributes(production);

      String[] result = {};
      for (IValue attributeValue : attributes) {
       
        if (attributeValue.getType().isAbstractData() && !attributeValue.getType().isBottom()) {
View Full Code Here

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

      IConstructor arg = x.getArguments().get(0).accept(this);
      return vf.constructor(Factory.Symbol_Opt, arg);
    }
   
    if (name.equals("alt")) {
      ISet set = vf.set(Factory.Symbol);
      Expression.Set arg = (Set) x.getArguments().get(0);
      for(Expression y: arg.getElements()){
        set = set.insert(y.accept(this));
      }
      return vf.constructor(Factory.Symbol_Alt, set);
    }
   
    if (name.equals("tuple")) {
View Full Code Here

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

    if (maxDepth <= 0 || (stRandom.nextInt(2) == 0)) {
      return writer.done();
    } else {
      RandomValueTypeVisitor visitor = descend();
      ISet set = (ISet) visitor.generate(type);

      IValue element = null;
      int recursionGuard = 0; // Domain of set can be small.
      while ((element == null || set.contains(element))
          && recursionGuard < 1000) {
        recursionGuard += 1;
        element = visitor.generate(type.getElementType());
      }
View Full Code Here

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

          return antiquotes.get(TreeAdapter.yield(tree)).asAnnotatable().setAnnotation("holeType", type);
        }

        private IConstructor retrieveHoleType(IConstructor tree) {
          IConstructor prod = TreeAdapter.getProduction(tree);
          ISet attrs = ProductionAdapter.getAttributes(prod);

          for (IValue attr : attrs) {
            if (((IConstructor) attr).getConstructorType() == Factory.Attr_Tag) {
              IValue arg = ((IConstructor) attr).get(0);
View Full Code Here

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

   
    try{
      boolean isListRel = rel instanceof IList;
      out = new UnicodeOutputStreamWriter(rex.getResolverRegistry().getOutputStream(loc.getURI(), false), encoding.getValue(), false);
      out = new BufferedWriter(out); // performance
      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(head){
        for(int i = 0; i < nfields; i++){
          if(i > 0)
            out.write(sep);
          String label = paramType.getFieldName(i);
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.