Package org.eclipse.imp.pdb.facts

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


      if (!pushDownProductionNames.isEmpty()) {
     
        Iterator<IValue> iter = ProductionAdapter.getSymbols(production).iterator();
        for (Integer pos = 0; iter.hasNext(); pos++) {
 
          IValue kidValue = iter.next();
 
          if (kidValue.getType().isAbstractData() && !kidValue.getType().isBottom()) {
            IConstructor kidConstructor = (IConstructor)kidValue;
           
            if (kidConstructor.getName().equals("label")) {
             
              String labelName = ((IString) kidConstructor.get(0)).getValue();
View Full Code Here


        }

        keyType = keyType.lub(keyResult.getType());
        valueType = valueType.lub(valueResult.getType());

        IValue keyValue = result.get(keyResult.getValue());
        if (keyValue != null) {
          throw org.rascalmpl.interpreter.utils.RuntimeExceptionFactory
              .MultipleKey(keyValue, mapping.getFrom(), __eval
                  .getStackTrace());
        }
View Full Code Here

    }
    IList children = getArgs(tree);
    IListWriter writer = ValueFactoryFactory.getValueFactory().listWriter(Factory.Args.getElementType());

    for (int i = 0; i < children.length(); ++i) {
      IValue kid = children.get(i);
      writer.append(kid);
      // skip layout and/or separators
      if (isSeparatedList(tree)) {
        i += getSeparatorCount(tree);
      } else {
View Full Code Here

    }
   
    hasNext = true;
   
    for (int i = 0; i < children.size(); i += 1){
      IValue childValue = treeSubject.get(i);
      IMatchingResult child = children.get(i);
      child.initMatch(ResultFactory.makeResult(childValue.getType(), childValue, ctx));
      hasNext = child.hasNext();
      if (!hasNext) {
        break; // saves time!
      }
    }
View Full Code Here

      else {
        nextChild--;

        if (nextChild >= 0) {
          for (int i = nextChild + 1; i < children.size(); i++) {
            IValue childValue = treeSubject.get(i);
            IMatchingResult tailChild = children.get(i);
            tailChild.initMatch(ResultFactory.makeResult(childValue.getType(), childValue, ctx));
          }
        }
      }
    }
      hasNext = false;
View Full Code Here

  public static String getCategory(IConstructor tree) {
    if (!isRegular(tree)) {
      for (IValue attr : getAttributes(tree)) {
        if (attr.getType().isAbstractData() && ((IConstructor) attr).getConstructorType() == Factory.Attr_Tag) {
          IValue value = ((IConstructor)attr).get("tag");
          if (value.getType().isNode() && ((INode) value).getName().equals("category")) {
            return ((IString) ((INode) value).get(0)).getValue();
          }
        }
      }
    }
View Full Code Here

        return iter.hasNext();
      }

      @Override
      public IValue next() {
        IValue elt = iter.next();
        Context ctx = new SetContext(getCtx(), getSet().delete(elt));
        return CursorFactory.makeCursor(elt, ctx);
      }

      @Override
View Full Code Here

    String query = loc.hasQuery() ? loc.getQuery() : null;
    String fragment = loc.hasFragment() ? loc.getFragment() : null;
   

    Type replType = repl.getType();
    IValue replValue = repl.getValue();

    try {
      String newStringValue = null;
      if (replType.isString()) {
        newStringValue = ((IString)replValue).getValue();
View Full Code Here

    if (symbol.isIter()) {
      if (lex) {
        return factory.constructor(Factory.Symbol_IterPlus, symbolAST2SymbolConstructor(symbol.getSymbol(), lex, layout));
      }
      else {
        IValue layoutSymbol = factory.constructor(Factory.Symbol_LayoutX, factory.string(layout));
        IValue elementSym = symbolAST2SymbolConstructor(symbol.getSymbol(), lex, layout);
        IValue seps = factory.list(layoutSymbol);
        return factory.constructor(Factory.Symbol_IterSepX, elementSym, seps);
      }
    }
    if (symbol.isIterStar()) {
      if (lex) {
        return factory.constructor(Factory.Symbol_IterStar, symbolAST2SymbolConstructor(symbol.getSymbol(), lex, layout));
      }
      else {
        IValue layoutSymbol = factory.constructor(Factory.Symbol_LayoutX, factory.string(layout));
        IValue elementSym = symbolAST2SymbolConstructor(symbol.getSymbol(), lex, layout);
        IValue seps = factory.list(layoutSymbol);
        return factory.constructor(Factory.Symbol_IterStarSepX, elementSym, seps);
      }
    }
    if (symbol.isIterSep()) {
      IValue layoutSymbol = factory.constructor(Factory.Symbol_LayoutX, factory.string(layout));
      IValue elementSym = symbolAST2SymbolConstructor(symbol.getSymbol(), lex, layout);
      IValue sepSym = symbolAST2SymbolConstructor(symbol.getSep(), lex, layout);
      IValue seps;
     
      if (lex) {
        seps = factory.list(sepSym);
      }
      else {
        seps = factory.list(layoutSymbol, sepSym, layoutSymbol);
      }
     
      return factory.constructor(Factory.Symbol_IterSepX, elementSym, seps);
    }
   
    if (symbol.isIterStarSep()) {
      IValue layoutSymbol = factory.constructor(Factory.Symbol_LayoutX, factory.string(layout));
      IValue elementSym = symbolAST2SymbolConstructor(symbol.getSymbol(), lex, layout);
      IValue sepSym = symbolAST2SymbolConstructor(symbol.getSep(), lex, layout);
      IValue seps;
      if (lex) {
        seps = factory.list(sepSym);
      }
      else {
        seps = factory.list(layoutSymbol, sepSym, layoutSymbol);
      }
      return factory.constructor(Factory.Symbol_IterStarSepX, elementSym, seps);
    }
   
    if (symbol.isLiteral()) {
      return literal2Symbol(symbol.getString());
    }
    if (symbol.isOptional()) {
      return factory.constructor(Factory.Symbol_Opt, symbolAST2SymbolConstructor(symbol.getSymbol(), lex, layout));
    }
   
    if (symbol.isStart()) {
      Nonterminal nonterminal = symbol.getNonterminal();
      return factory.constructor(Factory.Symbol_Start_Sort, factory.constructor(Factory.Symbol_Sort, factory.string(((Nonterminal.Lexical) nonterminal).getString())))
    }
    if (symbol.isNonterminal()) {
      Nonterminal nonterminal = symbol.getNonterminal();
      IString name = factory.string(((Nonterminal.Lexical) nonterminal).getString());
      if (lex) {
        return factory.constructor(Factory.Symbol_Lex, name);
      }
      else {
        return factory.constructor(Factory.Symbol_Sort, name);
      }
    }
   
    if(symbol.isSequence()){
      List<Sym> symbols = symbol.getSequence();
      IValue layoutSymbol = factory.constructor(Factory.Symbol_LayoutX, factory.string(layout));
      IValue[] symValues = new IValue[lex ? symbols.size() : symbols.size() * 2 - 1];
      for(int i = symbols.size() - 1; i >= 0; i -= lex ? 1 : 2) {
        symValues[lex ? i : i * 2] = symbolAST2SymbolConstructor(symbols.get(i), lex, layout);
        if (lex && i > 0) {
          symValues[i - 1] = layoutSymbol;
        }
      }
      IValue syms = factory.list(symValues);
      return factory.constructor(Factory.Symbol_Seq, syms);
    }
    if(symbol.isAlternative()){
      List<Sym> symbols = symbol.getSequence();
      IValue[] symValues = new IValue[symbols.size()];
      for(int i = symbols.size() - 1; i >= 0; --i){
        symValues[i] = symbolAST2SymbolConstructor(symbols.get(i), lex, layout);
      }
      IValue syms = factory.list(symValues);
      return factory.constructor(Factory.Symbol_Alt, syms);
    }
    if (symbol.isParametrized()) {
      List<Sym> symbols = symbol.getParameters();
      IValue[] symValues = new IValue[symbols.size()];
      for(int i = symbols.size() - 1; i >= 0; --i){
        symValues[i] = symbolAST2SymbolConstructor(symbols.get(i), lex, layout);
      }
      IValue syms = factory.list(symValues);
      return factory.constructor(Factory.Symbol_ParameterizedSort, factory.string(((Nonterminal.Lexical) symbol.getNonterminal()).getString()), syms);
    }
   
    if (symbol.isPrecede() || symbol.isNotPrecede() || symbol.isFollow() || symbol.isNotFollow() || symbol.isColumn() || symbol.isStartOfLine() || symbol.isEndOfLine() || symbol.isExcept()) {
      return symbolAST2SymbolConstructor(symbol.getSymbol(), lex, layout);
View Full Code Here

  private static IList ranges2Ranges(List<Range> ranges) {
    IListWriter result = factory.listWriter(Factory.CharRanges.getElementType());
   
    for (Range range : ranges) {
      if (range.isCharacter()) {
        IValue ch = char2int(range.getCharacter());
        result.append(factory.constructor(Factory.CharRange_Single, ch));
      }
      else if (range.isFromTo()) {
        IValue from = char2int(range.getStart());
        IValue to = char2int(range.getEnd());
        result.append(factory.constructor(Factory.CharRange_Range, from, to));
      }
    }
   
    return result.done();
View Full Code Here

TOP

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

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.