コード例 #1
0
 @Override
 public ASTNode transform(org.kframework.kil.Variable node) throws TransformerException {
   if (node.getSort().equals("Bag"))
     return new Variable(node.getName(), Kind.CELL_COLLECTION.toString());
   DataStructureSort dataStructureSort = context.dataStructureSortOf(node.getSort());
   if (dataStructureSort != null) {
     if (dataStructureSort.type().equals(org.kframework.kil.KSorts.LIST))
       return new Variable(node.getName(), KSorts.LIST);
     if (dataStructureSort.type().equals(org.kframework.kil.KSorts.MAP))
       return new Variable(node.getName(), KSorts.MAP);
     if (dataStructureSort.type().equals(org.kframework.kil.KSorts.SET))
       return new Variable(node.getName(), KSorts.SET);
   }
   return new Variable(node.getName(), node.getSort());
 }
コード例 #2
0
  @Override
  public ASTNode visit(org.kframework.kil.Variable node, Void _void) {
    String name = node.fullName();

    if (node.getSort().equals(org.kframework.kil.Sort.BAG)
        || node.getSort().equals(org.kframework.kil.Sort.BAG_ITEM)) {
      return new Variable(name, Kind.CELL_COLLECTION.asSort());
    }

    if (node.getSort().equals(org.kframework.kil.Sort.K)) {
      return new Variable(name, Sort.KSEQUENCE);
    }
    if (node.getSort().equals(org.kframework.kil.Sort.KLIST)) {
      return new Variable(name, Sort.KLIST);
    }

    DataStructureSort dataStructureSort = context.dataStructureSortOf(node.getSort());
    if (dataStructureSort != null) {
      Sort sort = null;
      if (dataStructureSort.type().equals(org.kframework.kil.Sort.LIST)) {
        sort = Sort.LIST;
      } else if (dataStructureSort.type().equals(org.kframework.kil.Sort.MAP)) {
        sort = Sort.MAP;
      } else if (dataStructureSort.type().equals(org.kframework.kil.Sort.SET)) {
        sort = Sort.SET;
      } else {
        assert false : "unexpected data structure " + dataStructureSort.type();
      }

      if (concreteCollectionSize.containsKey(node)) {
        return new ConcreteCollectionVariable(name, sort, concreteCollectionSize.get(node));
      } else {
        return new Variable(name, sort);
      }
    }

    return new Variable(name, Sort.of(node.getSort()));
  }