Interface FiniteAlphabet

  • All Superinterfaces:
    Alphabet, Annotatable, Changeable
    All Known Implementing Classes:
    AbstractAlphabet, IntegerAlphabet.SubIntegerAlphabet, SimpleAlphabet, SingletonAlphabet, SoftMaskedAlphabet

    public interface FiniteAlphabet
    extends Alphabet
    An alphabet over a finite set of Symbols.

    This interface makes the distinction between an alphabet over a finite (and possibly small) number of symbols and an Alphabet over an infinite (or extremely large) set of symbols. Within a FiniteAlphabet, the == operator should be sufficient to decide upon equality for all AtomicSymbol instances.

    The alphabet functions as the repository of objects in the fly-weight design pattern. Only symbols within an alphabet should appear in object that claim to use the alphabet - otherwise something is in error.

    Author:
    Matthew Pocock
    • Method Detail

      • size

        int size()
        The number of symbols in the alphabet.
        Returns:
        the size of the alphabet
      • iterator

        Iterator<Symboliterator()
        Retrieve an Iterator over the AtomicSymbols in this FiniteAlphabet.

        Each AtomicSymbol as for which this.contains(as) is true will be returned exactly once by this iterator in no specified order.

        Returns:
        an Iterator over the contained AtomicSymbol objects