|
SortExpression.java
|
// FILE. . . . . /home/hak/hlt/src/hlt/osf/base/SortExpression.java // EDIT BY . . . Hassan Ait-Kaci // ON MACHINE. . Hak-Laptop // STARTED ON. . Mon Sep 02 09:16:41 2013
|
package hlt.osf.base; import java.util.HashSet; import java.util.Iterator; import hlt.osf.exec.Context; import hlt.osf.util.BitCode; import hlt.osf.util.Decoded; import hlt.osf.io.DisplayManager;
| This is the mother class of all OSF sort expressions to be interpreted in a given context of a sort ordering. It is instantiated by specific classes corresponding to specific expressions. These are special kinds of instances of OsfExpressions. It will always evaluate as a code, which then can be retrieved as an explicit sort or a disjunctive sort. |
abstract public class SortExpression extends OsfExpression { /* ************************************************************************ */
|
Returns the type of this sort expression as a byte. This
may be one of:
|
abstract public byte type ();
/* ************************************************************************ */
public boolean isConstant ()
{
return type() == Context.CON();
}
public boolean isSymbol ()
{
return type() == Context.SYM();
}
public boolean isDisjunction ()
{
return type() == Context.DIS();
}
public boolean isNot ()
{
return type() == Context.NOT();
}
public boolean isAnd ()
{
return type() == Context.AND();
}
public boolean isOr ()
{
return type() == Context.OR();
}
public boolean isButnot ()
{
return type() == Context.BNT();
}
/* ************************************************************************ */
| This is this SortExpression's bit code after sort encoding. |
private BitCode _bitcode;
| Returns this sort SortExpression's bit code after sort encoding by evaluating it in its context, but only if necessary. |
public BitCode bitcode ()
{
return _bitcode == null
? (_bitcode = _context.evaluate(this))
: _bitcode;
}
// /**
// * Sets the binary code of this <tt>SortExpression</tt> to the
// * specified argument (a <tt>BitCode</tt>).
// *
// * @params code a <tt>BitCode</tt>
// * @return this <tt>Sort</tt>
// */
// public SortExpression setBitcode (BitCode code)
// {
// _bitcode = code;
// return this;
// }
/* ************************************************************************ */
| Returns the string form of this SortExpression's maximal lower bound after it has been evaluated in its context. |
public String maxLowerBound ()
{
Decoded decoded = decoded();
// System.err.println(">>> Decoded form of sort expression: \""+this+"\" is: "+decoded);
// System.err.println(">>> Its bit code is: "+decoded.bitcode());
if (decoded.isSort())
return decoded.sort().toString();
int size = 0;
HashSet glbs = decoded.glbs();
// System.err.println(">>> glbs = decoded.glbs() == "+glbs);
StringBuffer buf = new StringBuffer("{ ");
if (glbs != null)
for (Iterator it=glbs.iterator();it.hasNext();)
{
if (++size == Decoded.enumSize())
{
buf.append("...");
break;
}
buf.append(it.next());
if (it.hasNext())
buf.append(" ; ");
}
buf.append(" }");
// System.err.println(">>> glbs in string form == "+buf);
return buf.toString();
}
/* ************************************************************************ */
private Decoded _decoded;
| Returns a Decoded object corresponding to the bitcode of this sort expression. |
public Decoded decoded ()
{
return _decoded == null
? (_decoded = _context.decode(bitcode()))
: _decoded;
}
/* ************************************************************************ */
| This is a flag indicating whether this expression is parenthesized or not. This is used for rendering its original string form. |
private boolean _isParenthesized = false;
| This returns whether or not this expression is parenthesized. This is used for rendering its original string form. |
public boolean isParenthesized ()
{
return _isParenthesized;
}
| This sets whether or not this expression is to be parenthesized. This is used for rendering its original string form. |
public SortExpression setParenthesized (boolean value)
{
_isParenthesized = value;
return this;
}
/* ************************************************************************ */
public String toString ()
{
return displayForm();
}
/* ************************************************************************ */
}
This file was generated on Mon Sep 09 09:18:00 PDT 2019 from file SortExpression.java
by the hlt.language.tools.Hilite Java tool written by Hassan Aït-Kaci