Primitive of the tree regular expression.
most of the derived class is immutable (except ReferenceExp, ElementExp and OtherExp).
By making it immutable, it becomes possible to share subexpressions among expressions.
This is very important for regular-expression-derivation based validation algorithm,
as well as for smaller memory footprint.
This sharing is automatically achieved by ExpressionPool.
ReferebceExp, ElementExp, and OtherExp are also placed in the pool,
but these are not unified. Since they are not unified,
application can derive classes from these expressions
and mix them into AGM. This technique is heavily used to introduce schema language
specific primitives into AGM. See various sub-packages of this package for examples.
The equals method must be implemented by the derived type. equals method will be
used to unify the expressions. equals method can safely assume that its children
are already unified (therefore == can be used to test the equality, rather than
equals method).
To achieve unification, we overload the equals method so that
o1.equals(o2)
is true if o1 and o2 are identical.
There, those two objects must return the same hash code. For this purpose,
the hash code is calculated statically and cached internally.
equals
public abstract boolean equals(Object o)
getExpandedExp
public Expression getExpandedExp(ExpressionPool pool)
Gets the expression after removing all ReferenceExps, until child
AttributeExp or ElementExp.
hashCode
public final int hashCode()
isEpsilonReducible
public boolean isEpsilonReducible()
returns true if this expression accepts empty sequence.
If this method is called while creating Expressions, then this method
may return approximated value. When this method is used while validation,
this method is guaranteed to return the correct value.
peelOccurence
public final Expression peelOccurence()
Peels the occurence expressions from this expression.
In AGM, 'X?','X+' and 'X*' are represented by using
other primitives. This method returns the 'X' part by
removing occurence related expressions.