Package aterm

Examples of aterm.ATerm


    }
    return array;
  }

  private ATerm parseFromReader(ATermReader reader) throws IOException {
    ATerm result;
    int c, start, end;
    String funname;

    start = reader.getPosition();
    switch (reader.getLastChar()) {
      case -1:
        throw new ParseError("premature EOF encountered.");

      case '#':
        return parseAbbrev(reader);

      case '[':
        c = reader.readSkippingWS();
        if (c == -1) {
          throw new ParseError("premature EOF encountered.");
        }

        if (c == ']') {
          c = reader.readSkippingWS();
          result = empty;
        } else {
          result = parseATerms(reader);
          if (reader.getLastChar() != ']') {
            throw new ParseError("expected ']' but got '" + (char) reader.getLastChar() + "'");
          }
          c = reader.readSkippingWS();
        }

        break;

      case '<':
        c = reader.readSkippingWS();
        ATerm ph = parseFromReader(reader);

        if (reader.getLastChar() != '>') {
          throw new ParseError("expected '>' but got '" + (char) reader.getLastChar() + "'");
        }

        c = reader.readSkippingWS();

        result = makePlaceholder(ph);

        break;

      case '"':
        funname = parseString(reader);

        c = reader.readSkippingWS();
        if (reader.getLastChar() == '(') {
          c = reader.readSkippingWS();
          if (c == -1) {
            throw new ParseError("premature EOF encountered.");
          }
          if (reader.getLastChar() == ')') {
            result = makeAppl(makeAFun(funname, 0, true));
          } else {
            ATerm[] list = parseATermsArray(reader);

            if (reader.getLastChar() != ')') {
              throw new ParseError("expected ')' but got '" + reader.getLastChar() + "'");
            }
            result = makeAppl(makeAFun(funname, list.length, true), list);
          }
          c = reader.readSkippingWS();
        } else {
          result = makeAppl(makeAFun(funname, 0, true));
        }

        break;

      case '(':
        c = reader.readSkippingWS();
        if (c == -1) {
          throw new ParseError("premature EOF encountered.");
        }
        if (reader.getLastChar() == ')') {
          result = makeAppl(makeAFun("", 0, false));
        } else {
          ATerm[] list = parseATermsArray(reader);

          if (reader.getLastChar() != ')') {
            throw new ParseError("expected ')' but got '" + (char)reader.getLastChar() + "'");
          }
          result = makeAppl(makeAFun("", list.length, false), list);
        }
        c = reader.readSkippingWS();

        break;

      case '-':
      case '0':
      case '1':
      case '2':
      case '3':
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9':
        result = parseNumber(reader);
        c = reader.skipWS();
        break;

      default:
        c = reader.getLastChar();
        if (Character.isLetter(c)) {
          funname = parseId(reader);
          c = reader.skipWS();
          if (reader.getLastChar() == '(') {
            c = reader.readSkippingWS();
            if (c == -1) {
              throw new ParseError("premature EOF encountered.");
            }
            if (reader.getLastChar() == ')') {
              result = makeAppl(makeAFun(funname, 0, false));
            } else {
              ATerm[] list = parseATermsArray(reader);

              if (reader.getLastChar() != ')') {
                throw new ParseError("expected ')' but got '" + (char) reader.getLastChar() + "'");
              }
              result = makeAppl(makeAFun(funname, list.length, false), list);
            }
            c = reader.readSkippingWS();
          } else {
            result = makeAppl(makeAFun(funname, 0, false));
          }
        } else {
          throw new ParseError("illegal character: '" + (char) reader.getLastChar() + "'");
        }
    }

    if (reader.getLastChar() == '{') {
      ATermList annos;
      if (reader.readSkippingWS() == '}') {
        reader.readSkippingWS();
        annos = empty;
      } else {
        annos = parseATerms(reader);
        if (reader.getLastChar() != '}') {
          throw new ParseError("'}' expected '" + (char) reader.getLastChar() + "'");
        }
        reader.readSkippingWS();
      }
      result = result.setAnnotations(annos);
    }

    /* Parse some ToolBus anomalies for backwards compatibility */
    if (reader.getLastChar() == ':') {
      reader.read();
      ATerm anno = parseFromReader(reader);
      result = result.setAnnotation(parse("type"), anno);
    }

    if (reader.getLastChar() == '?') {
      reader.readSkippingWS();
View Full Code Here


  public ATerm parse(String trm) {
    try {
      ATermReader reader = new ATermReader(new StringReader(trm), trm.length());
      reader.readSkippingWS();
      ATerm result = parseFromReader(reader);
      return result;
    } catch (IOException e) {
      throw new ParseError("premature end of string");
    }
  }
View Full Code Here

    }
    throw new RuntimeException("Unsupported file type");
  }
 
  public ATerm readFromFile(String filename) throws IOException{
    ATerm result;
   
    FileInputStream fis = new FileInputStream(filename);
    try{
      result = readFromFile(fis);
    }finally{
View Full Code Here

   */
  public ATerm importTerm(ATerm term){
    SharedObject object = (SharedObject) term;
    if(contains(object)) return term;
   
    ATerm result;
   
    switch(term.getType()){
      case ATerm.APPL:
        ATermAppl appl = (ATermAppl) term;
       
        AFun fun = (AFun) importTerm(appl.getAFun());
       
        int nrOfArguments = appl.getArity();
        ATerm[] newArguments = new ATerm[nrOfArguments];
        for(int i = nrOfArguments - 1; i >= 0; i--){
          newArguments[i] = importTerm(appl.getArgument(i));
        }
       
        result = makeAppl(fun, newArguments);
        break;
      case ATerm.LIST:
        ATermList list = (ATermList) term;
        if(list.isEmpty()){
          result = empty;
          break;
        }
        ATerm first = importTerm(list.getFirst());
        ATermList next = (ATermList) importTerm(list.getNext());
       
        result = makeList(first, next);
        break;
      case ATerm.INT:
View Full Code Here

    return false;
  }

  public boolean match(ATerm pattern, List<Object> list) {
    if (pattern.getType() == ATerm.PLACEHOLDER) {
      ATerm t = ((ATermPlaceholder) pattern).getPlaceholder();
      if (t.getType() == ATerm.APPL) {
        ATermAppl appl = (ATermAppl) t;
        AFun afun = appl.getAFun();
        if (afun.getName().equals("placeholder") && afun.getArity() == 0 && !afun.isQuoted()) {
          list.add(t);
          return true;
View Full Code Here

    fun = appl.getAFun();
    name = fun.getName();
    if (!fun.isQuoted()) {
      if (fun.getArity() == 0) {
        if (name.equals("term")) {
          ATerm t = (ATerm) args.get(0);
          args.remove(0);

          return t;
        } else if (name.equals("list")) {
          ATermList l = (ATermList) args.get(0);
          args.remove(0);

          return l;
        } else if (name.equals("bool")) {
          Boolean b = (Boolean) args.get(0);
          args.remove(0);

          return factory.makeAppl(factory.makeAFun(b.toString(), 0,
                false));
        } else if (name.equals("int")) {
          Integer i = (Integer) args.get(0);
          args.remove(0);

          return factory.makeInt(i.intValue());
        } else if (name.equals("real")) {
          Double d = (Double) args.get(0);
          args.remove(0);

          return factory.makeReal(d.doubleValue());
        } else if (name.equals("blob")) {
            byte[] data = (byte[]) args.get(0);
            args.remove(0);

            return factory.makeBlob(data);
        } else if (name.equals("placeholder")) {
          ATerm t = (ATerm) args.get(0);
          args.remove(0);
          return factory.makePlaceholder(t);
        } else if (name.equals("str")) {
          String str = (String) args.get(0);
          args.remove(0);
View Full Code Here

    return (annotations != null && !annotations.isEmpty());
  }

  public ATerm setAnnotation(ATerm label, ATerm anno){
    ATermList new_annos = annotations.dictPut(label, anno);
    ATerm result = setAnnotations(new_annos);

    return result;
  }
View Full Code Here

    return (this == obj);
  }

  boolean match(ATerm pattern, List<Object> list){
    if(pattern.getType() == PLACEHOLDER){
      ATerm type = ((ATermPlaceholder) pattern).getPlaceholder();
      if(type.getType() == ATerm.APPL){
        ATermAppl appl = (ATermAppl) type;
        AFun afun = appl.getAFun();
        if(afun.getName().equals("term") && afun.getArity() == 0 && !afun.isQuoted()){
          list.add(this);
          return true;
View Full Code Here

    if (equals(pattern)) {
      return true;
    }

    if (pattern.getType() == ATerm.PLACEHOLDER) {
      ATerm type = ((ATermPlaceholder) pattern).getPlaceholder();
      if (type.getType() == ATerm.APPL) {
        ATermAppl appl = (ATermAppl) type;
        AFun afun = appl.getAFun();
        if (afun.getName().equals("blob")
            && afun.getArity() == 0
            && !afun.isQuoted()) {
View Full Code Here

    if (equals(pattern)) {
      return true;
    }

    if (pattern.getType() == ATerm.PLACEHOLDER) {
      ATerm type = ((ATermPlaceholder) pattern).getPlaceholder();
      if (type.getType() == ATerm.APPL) {
        ATermAppl appl = (ATermAppl) type;
        AFun afun = appl.getAFun();
        if (afun.getName().equals("real") && afun.getArity() == 0 && !afun.isQuoted()) {
          list.add(new Double(value));
          return true;
View Full Code Here

TOP

Related Classes of aterm.ATerm

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.