001    package nl.cwi.sen1.tide.tool.support;
002    
003    import java.util.ArrayList;
004    import java.util.List;
005    
006    import aterm.ATerm;
007    import aterm.ATermFactory;
008    
009    
010    
011    public class VarFormat
012      implements ExprFormat
013    {
014      private static final String PAT_VAR =
015        "var(<str>,<term>,<int>,<int>,<int>,<int>)";
016      private static final String PAT_UNKNOWN_VAR = "var-unknown(<str)";
017      
018      public String format(Expr expr)
019      {
020        if (expr.isVar()) {
021          return expr.getVarValue().toString();
022        } else if (expr.isVarUnknown()) {
023          return expr.getVarUnknownMessage();
024        } else {
025          return "???";
026        }
027      }
028    
029      public static ATerm  makeVarUnknown(ATermFactory factory, String msg)
030         {            
031                   List<Object> args = new ArrayList<Object>();
032                   args.add(msg);
033                   return factory.make(PAT_UNKNOWN_VAR, args);
034               }
035       
036         public static ATerm makeExprVar(ATermFactory factory, String var, ATerm value,  int pos, int line, int column, int length)
037         {
038                   List<Object> args = new ArrayList<Object>();
039                   args.add(var);
040                   args.add(value);
041                   args.add(new Integer(pos));
042                   args.add(new Integer(line));
043                   args.add(new Integer(column));
044                   args.add(new Integer(length));
045                   return factory.make(PAT_VAR, args);
046               }
047      
048    }
049