package edu.stanford.nlp.sempre;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import fig.basic.LispTree;
import fig.basic.LogInfo;
import java.util.Comparator;
/**
* Values represent denotations (or partial denotations).
*
* @author Percy Liang
*/
public abstract class Value {
public abstract LispTree toLispTree();
// Print using LogInfo.
public void log() { LogInfo.logs("%s", toString()); }
@JsonValue
public String toString() { return toLispTree().toString(); }
// (optional) String used for sorting Values. The default is to call toString()
public String sortString() { return toString(); }
@JsonCreator
public static Value fromString(String str) {
return Values.fromLispTree(LispTree.proto.parseFromString(str));
}
@Override public abstract boolean equals(Object o);
@Override public abstract int hashCode();
public static class ValueComparator implements Comparator<Value> {
@Override
public int compare(Value o1, Value o2) {
return o1.toString().compareTo(o2.toString());
}
}
}