Package org.eclipse.imp.pdb.facts

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


      ownValue = ((IConstructor) ownValue).asAnnotatable().setAnnotation(annoName, annoValue);
    }
  }
 
  protected void setAnnotation(String annoName, IValueList annoList) {
    IList annos = (IList) annoList.asList();
    if(this.ownValue == null) {
      return ;
    }
    if (annoList != null && this.ownValue.getType().declaresAnnotation(this.typeStore, annoName) && !annos.isEmpty()) {
      this.ownValue = ((IConstructor) this.ownValue).asAnnotatable().setAnnotation(annoName, annos);
    }
  }
View Full Code Here


           IConstructor parsedFragment = parseFragment(eval, env, (IConstructor) TreeAdapter.getArgs(tree).get(0), location);
           return TreeAdapter.setArgs(tree, vf.list(parsedFragment));
         }
         else {
           IListWriter w = vf.listWriter();
           IList args = TreeAdapter.getArgs(tree);
           for (IValue arg : args) {
             w.append(arg.accept(this));
           }
           args = w.done();
          
View Full Code Here

      return tree.asAnnotatable().setAnnotation("can not parse fragment due to " + e.getMessage(), src);
    }
  }
 
  private static char[] replaceAntiQuotesByHoles(IEvaluator<Result<IValue>> eval, IConstructor lit, Map<String, IConstructor> antiquotes) {
    IList parts = TreeAdapter.getArgs(lit);
    StringBuilder b = new StringBuilder();
   
    for (IValue elem : parts) {
      IConstructor part = (IConstructor) elem;
      String cons = TreeAdapter.getConstructorName(part);
View Full Code Here

        @Override
        public IConstructor visitTreeAppl(IConstructor tree)  {
          String cons = TreeAdapter.getConstructorName(tree);
          if (cons == null || !cons.equals("$MetaHole") ) {
            IListWriter w = eval.getValueFactory().listWriter();
            IList args = TreeAdapter.getArgs(tree);
            for (IValue elem : args) {
              w.append(elem.accept(this));
            }
            args = w.done();
           
View Full Code Here

  }

  private Element nodeToElement(IConstructor elt) {
    IConstructor ns = (IConstructor) elt.get(0);
    IString name = (IString) elt.get(1);
    IList kids = (IList) elt.get(2);
    Element e = new Element(name.getValue(), namespaceToNamespace(ns));
    for (IValue k: kids) {
      IConstructor n = (IConstructor) k;
      if (n.getConstructorType() == Factory.Node_attribute) {
        e.setAttribute(nodeToAttribute(n));
View Full Code Here

    return bool(loe.getLess() && !loe.getEqual(), ctx);
  }

  @Override
  protected LessThanOrEqualResult lessThanOrEqualList(ListResult that) {
    IList left = that.getValue();
    IList right = getValue();
    boolean eq = left.isEqual(right);
    return new LessThanOrEqualResult(left.isSubListOf(right) && !eq, eq, ctx);
  }
View Full Code Here

    return bool(loe.getLess() && !loe.getEqual(), ctx);
  }

  @Override
  protected LessThanOrEqualResult lessThanOrEqualListRelation(ListRelationResult that) {
    IList left = that.getValue();
    IList right = getValue();
    boolean eq = left.isEqual(right);
    return new LessThanOrEqualResult(left.isSubListOf(right) && !eq, eq, ctx);
  }
View Full Code Here

        new PrintWriter(System.err));
    jr.voidValue("import List;");
    System.out.println(jr.stringValue("\"<2+3>\";"));
    System.out.println(jr.stringValue("\"aap:<size([2,3])>\";"));
    final IInteger d1 = vf.integer(1), d2 = vf.integer(2);
    final IList l = vf.list(d1, d2);
    System.out.println(jr.call("size", l));
    // System.out.println(jr.call("+", d1, d2));
  }
View Full Code Here

    }
    if (isSort(symbol) || isLex(symbol) || isKeyword(symbol)) {
      return getName(symbol);
    }
    if (isCharClass(symbol)) {
      IList ranges = getRanges(symbol);
      StringBuilder b = new StringBuilder();
      b.append("[");
      for (IValue range : ranges) {
        IInteger from = getRangeBegin(range);
        IInteger to = getRangeEnd(range);
        if  (from.equals(to)) {
          b.append(escapeChar(from.intValue()));
        }
        else {
          b.append(escapeChar(from.intValue()));
          b.append("-");
          b.append(escapeChar(to.intValue()));
        }
      }
      b.append("]");
      return b.toString();
    }
   
   
    if (isIterPlusSeps(symbol)) {
      IList seps = getSeparators(symbol);
      StringBuilder b = new StringBuilder();
     
      if (!withLayout && seps.length() == 1 && isLayouts((IConstructor) seps.get(0))) {
        b.append(toString(getSymbol(symbol), withLayout));
        b.append('+');
      }
      else {
        b.append('{');
        b.append(toString(getSymbol(symbol), withLayout));
        for (IValue sep : seps) {
          b.append(" ");
          b.append(toString((IConstructor) sep, withLayout));
        }
        b.append('}');
        b.append('+');
      }
     
      return b.toString();
     
    }
   
    if (isIterStarSeps(symbol)) {
      StringBuilder b = new StringBuilder();
       IList seps = getSeparators(symbol);
      
      if (!withLayout && seps.length() == 1 && isLayouts((IConstructor) seps.get(0))) {
        b.append(toString(getSymbol(symbol), withLayout));
        b.append('*');
      }
      else {
        b.append('{');
        b.append(toString(getSymbol(symbol), withLayout));
        for (IValue sep : seps) {
          if (!isLayouts((IConstructor) sep)) {
            b.append(" ");
            b.append(toString((IConstructor) sep, withLayout));
          }
        }
        b.append('}');
        b.append('*');
      }
      return b.toString();
    }
    if (isIterPlus(symbol)) {
      return toString(getSymbol(symbol), withLayout) + '+';
    }
    if (isIterStar(symbol)) {
      return toString(getSymbol(symbol), withLayout) + '*';
    }
    if (isOpt(symbol)) {
      return toString(getSymbol(symbol), withLayout) + '?';
    }
    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()) {
        case "precede":
          b.append(toString((IConstructor) cond.get("symbol"), withLayout));
          b.append(" << ");
          break;
        case "not-precede":
          b.append(toString((IConstructor) cond.get("symbol"), withLayout));
          b.append(" !<< ");
          break;
        case "begin-of-line":
          b.append("^ ");
          break;
        }
      }
      // then the symbol
      b.append(toString(getSymbol(symbol), withLayout));
     
      // then the postfix conditions
      for (IValue elem : conditions) {
        IConstructor cond = (IConstructor) elem;
        switch (cond.getConstructorType().getName()) {
        case "follow":
          b.append(" >> ");
          b.append(toString((IConstructor) cond.get("symbol"), withLayout));
          break;
        case "not-follow":
          b.append(" !>> ");
          b.append(toString((IConstructor) cond.get("symbol"), withLayout));
          break;
        case "delete":
          b.append(" \\ ");
          b.append(toString((IConstructor) cond.get("symbol"), withLayout));
          break;
        case "except":
          b.append("!");
          b.append(((IString) cond.get("label")).getValue());
        case "end-of-line":
          b.append(" $");
          break;
        }
      }
       
      return b.toString();
    }
   
    if (isADT(symbol) || isAlias(symbol)) {
      StringBuilder b = new StringBuilder();
      b.append(getName(symbol));
      IList params = (IList) symbol.get("parameters");
     
      if (!params.isEmpty()) {
        b.append('[');
        b.append(toString(params, ',', withLayout));
        b.append(']');
      }
      return b.toString();
View Full Code Here

    if (debug) {
      System.err.println("length=" + length);
      System.err.println("reducedLength=" + reducedLength);
    }  

    IList sublist = makeSubList(start, reducedLength);

    if(debug)System.err.println("matchBindingListVar: init child #" + patternCursor + " (" + child + ") with " + sublist);
    // TODO : check if we can use a static type here!?
    child.initMatch(ResultFactory.makeResult(sublist.getType(), sublist, ctx));

    if(child.next()){
      subjectCursor = start + length;
      if(debug)System.err.println("child matches, subjectCursor=" + subjectCursor);
      patternCursor += delta;
View Full Code Here

TOP

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

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.