dk.brics.automaton

## Class RunAutomaton

- java.lang.Object
- - dk.brics.automaton.RunAutomaton

- All Implemented Interfaces:
    java.io.Serializable

      public class RunAutomaton
      extends java.lang.Object
      implements java.io.Serializable

  Finite-state automaton with fast run operation.
  Author:
    Anders Møller <amoeller@cs.au.dk>
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `RunAutomaton(Automaton a)` Constructs a new `RunAutomaton` from a deterministic `Automaton`.
    `RunAutomaton(Automaton a, boolean tableize)` Constructs a new `RunAutomaton` from a deterministic `Automaton`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `char[]` | `getCharIntervals()` Returns array of character class interval start points.
    `int` | `getInitialState()` Returns initial state.
    `int` | `getSize()` Returns number of states in automaton.
    `boolean` | `isAccept(int state)` Returns acceptance status for given state.
    `static RunAutomaton` | `load(java.io.InputStream stream)` Retrieves a serialized `RunAutomaton` from a stream.
    `static RunAutomaton` | `load(java.net.URL url)` Retrieves a serialized `RunAutomaton` located by a URL.
    `AutomatonMatcher` | `newMatcher(java.lang.CharSequence s)` Creates a new automaton matcher for the given input.
    `AutomatonMatcher` | `newMatcher(java.lang.CharSequence s, int startOffset, int endOffset)` Creates a new automaton matcher for the given input.
    `boolean` | `run(java.lang.String s)` Returns true if the given string is accepted by this automaton.
    `int` | `run(java.lang.String s, int offset)` Returns the length of the longest accepted run of the given string starting at the given offset.
    `int` | `step(int state, char c)` Returns the state obtained by reading the given char from the given state.
    `void` | `store(java.io.OutputStream stream)` Writes this `RunAutomaton` to the given stream.
    `java.lang.String` | `toString()` Returns a string representation of this automaton.

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### RunAutomaton

          public RunAutomaton(Automaton a)

      Constructs a new `RunAutomaton` from a deterministic `Automaton`. Same as `RunAutomaton(a, true)`.
      Parameters:
        `a` - an automaton

    - #### RunAutomaton

          public RunAutomaton(Automaton a,
                      boolean tableize)

      Constructs a new `RunAutomaton` from a deterministic `Automaton`. If the given automaton is not deterministic, it is determinized first.
      Parameters:
        `a` - an automaton
        `tableize` - if true, a transition table is created which makes the `run` method faster in return of a higher memory usage

  - ### Method Detail

    - #### toString

          public java.lang.String toString()

      Returns a string representation of this automaton.
      Overrides:
        `toString` in class `java.lang.Object`

    - #### getSize

          public int getSize()

      Returns number of states in automaton.

    - #### isAccept

          public boolean isAccept(int state)

      Returns acceptance status for given state.

    - #### getInitialState

          public int getInitialState()

      Returns initial state.

    - #### getCharIntervals

          public char[] getCharIntervals()

      Returns array of character class interval start points. The array should not be modified by the caller.

    - #### load

          public static RunAutomaton load(java.net.URL url)
                                   throws java.io.IOException,
                                          java.io.OptionalDataException,
                                          java.lang.ClassCastException,
                                          java.lang.ClassNotFoundException,
                                          java.io.InvalidClassException

      Retrieves a serialized `RunAutomaton` located by a URL.
      Parameters:
        `url` - URL of serialized automaton
      Throws:
        `java.io.IOException` - if input/output related exception occurs
        `java.io.OptionalDataException` - if the data is not a serialized object
        `java.io.InvalidClassException` - if the class serial number does not match
        `java.lang.ClassCastException` - if the data is not a serialized `RunAutomaton`
        `java.lang.ClassNotFoundException` - if the class of the serialized object cannot be found

    - #### load

          public static RunAutomaton load(java.io.InputStream stream)
                                   throws java.io.IOException,
                                          java.io.OptionalDataException,
                                          java.lang.ClassCastException,
                                          java.lang.ClassNotFoundException,
                                          java.io.InvalidClassException

      Retrieves a serialized `RunAutomaton` from a stream.
      Parameters:
        `stream` - input stream with serialized automaton
      Throws:
        `java.io.IOException` - if input/output related exception occurs
        `java.io.OptionalDataException` - if the data is not a serialized object
        `java.io.InvalidClassException` - if the class serial number does not match
        `java.lang.ClassCastException` - if the data is not a serialized `RunAutomaton`
        `java.lang.ClassNotFoundException` - if the class of the serialized object cannot be found

    - #### store

          public void store(java.io.OutputStream stream)
                     throws java.io.IOException

      Writes this `RunAutomaton` to the given stream.
      Parameters:
        `stream` - output stream for serialized automaton
      Throws:
        `java.io.IOException` - if input/output related exception occurs

    - #### step

          public int step(int state,
                 char c)

      Returns the state obtained by reading the given char from the given state. Returns -1 if not obtaining any such state. (If the original `Automaton` had no dead states, -1 is returned here if and only if a dead state is entered in an equivalent automaton with a total transition function.)

    - #### run

          public boolean run(java.lang.String s)

      Returns true if the given string is accepted by this automaton.

    - #### run

          public int run(java.lang.String s,
                int offset)

      Returns the length of the longest accepted run of the given string starting at the given offset.
      Parameters:
        `s` - the string
        `offset` - offset into `s` where the run starts
      Returns:
        length of the longest accepted run, -1 if no run is accepted

    - #### newMatcher

          public AutomatonMatcher newMatcher(java.lang.CharSequence s)

      Creates a new automaton matcher for the given input.
      Parameters:
        `s` - the CharSequence to search
      Returns:
        A new automaton matcher for the given input

    - #### newMatcher

          public AutomatonMatcher newMatcher(java.lang.CharSequence s,
                                    int startOffset,
                                    int endOffset)

      Creates a new automaton matcher for the given input.
      Parameters:
        `s` - the CharSequence to search
        `startOffset` - the starting offset of the given character sequence
        `endOffset` - the ending offset of the given character sequence
      Returns:
        A new automaton matcher for the given input