go to previous page   go to home page   go to next page

Answer:

Click!


Complete Program

Here is the complete program. If you want to run it, highlight the entire program with the mouse, copy it to the clipboard (control-C), then paste it into your usual Java editor (control-V). Save to a file (from the editor) and compile and run as usual.

class FSAaz
{

  public boolean recognize(String str)
  {
    final int reject = 3;  // rejection state
    int  state = 0;        // the current state
    char current;          // the current character
    int  index = 0 ;       // index of the current character

    // continue while there are input characters
    // and the reject state has not been reached
    while ( index < str.length() && state != reject  )
    {
      current = str.charAt( index++ ) ;

      // State 0
      if      ( state==0 && current=='a' )
        state = 1;

      // State 1
      else if ( state==1  && current >= 'a' && current <= 'y')
        state = 1;

      else if ( state==1  && current == 'z')
        state = 2;

     // State 2
      else if ( state==2  && current >= 'a' && current <= 'y')
        state = 1;

      else if ( state==2  && current == 'z')
        state = 2;

      // no transition 
      else
        state = reject ;

    }

    // if the final state was reached with the last character,
    // the string is accepted.
    if ( index == str.length() && state == 2 )
      return true;

    else
      return false;

  }

}

class FSAtester
{
  public static void main (String[] args)
  {
    String str = null;
    FSAaz fsa = new FSAaz();

    str = args[0];

    if ( fsa.recognize( str ) )
      System.out.println("The string is recognized.");
    else
      System.out.println("The string is rejected.");
  }
}

Here is a run of the program. Of course, you should compile and run your own version:

C:\CAI\FiniteAutomata\Section02>javac FSAtester.java

C:\CAI\FiniteAutomata\Section02>java FSAtester annnz
The string is recognized.

C:\CAI\FiniteAutomata\Section02>java FSAtester annnz
The string is recognized.

C:\CAI\FiniteAutomata\Section02>java FSAtester ratz
The string is rejected.


QUESTION 14:

Can this program be used as a prototype for other finite state automata?