import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

/**
 *
 * @author davereed
 */
public class PathTracer {
    public static void main(String[] args) throws java.io.FileNotFoundException {
        FiniteStateMachine<String, String> fsm = new FiniteStateMachine<String, String>();

        Scanner input = new Scanner(System.in);
        System.out.print("Enter FSM file: ");
        String filename = input.next();
        Scanner infile = new Scanner(new File(filename));
        while (infile.hasNext()) {
            fsm.addEdge(infile.next(), infile.next(), infile.next());
        }
        infile.close();
                
        System.out.print("\nEnter a start state (* to end): ");
        String startState = input.next();
        input.nextLine();
        while (!startState.equals("*")) {
            System.out.print("Enter an edge sequence (separated with whitespace): ");
            List<String> edgeList = Arrays.asList(input.nextLine().split("\\s+"));
            String endEdge = fsm.findEndState(startState, edgeList);
            if (endEdge == null) {
                System.out.println("ILLEGAL SEQUENCE");
            }
            else {
                System.out.println("End state: " + endEdge);
            }
            
            System.out.print("\nEnter another start state (* to end): ");
            startState = input.next();
            input.nextLine();
        }
        System.out.println("DONE");
        input.close();
    }    
}
