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