package pregroup;
public interface PhraseElem
{
public String toString();
public String toLatex();
public boolean isType();
public boolean isLB();
public boolean isRB();
public boolean isStar();
public boolean isProducer();
public boolean isS();
}
class TypeElem implements PhraseElem
{
public SimpleType val;
public String toString() { return val.toString(); }
public String toLatex() { return val.toLatex(); }
public boolean isType() { return true; }
public boolean isLB() { return false; }
public boolean isRB() { return false; }
public boolean isStar() { return false; }
public boolean isProducer() { return val.isProductive(); }
public boolean isS() { return val.getBase().equals("s"); }
}
class StarElem implements PhraseElem
{
public String toString() { return " * "; }
public String toLatex() { return toString(); }
public boolean isType() { return false; }
public boolean isLB() { return false; }
public boolean isRB() { return false; }
public boolean isStar() { return true; }
public boolean isProducer() { return false; }
public boolean isS() { return false; }
}
class LBElem implements PhraseElem
{
public String toString() { return " < "; }
public String toLatex() { return toString(); }
public boolean isType() { return false; }
public boolean isLB() { return true; }
public boolean isRB() { return false; }
public boolean isStar() { return false; }
public boolean isProducer() { return false; }
public boolean isS() { return false; }
}
class RBElem implements PhraseElem
{
public String toString() { return " > "; }
public String toLatex() { return toString(); }
public boolean isType() { return false; }
public boolean isLB() { return false; }
public boolean isRB() { return true; }
public boolean isStar() { return false; }
public boolean isProducer() { return false; }
public boolean isS() { return false; }
}