import java.util.Scanner; /** * A class that reads input lines from the user. * Input is filtered via getCommand for valid commands. * * @author David J. Barnes and Michael Kölling. * @version 2011.07.31 */ public class Parser { // Hold all valid command words. private CommandWords commands; private Scanner reader; public Parser() { commands = new CommandWords(); reader = new Scanner(System.in); } /** * Read the next command from the user. * The returned command will be valid. * @return A valid command. */ public String getCommand() { String command = null; do { // Print a prompt. System.out.print("> "); String word = reader.next(); // Discard the rest of the line. readLine(); if(commands.isCommand(word)) { command = word; } else{ System.out.println("Unrecognized command: " + word); System.out.print("Valid commands are: "); commands.showAll(); } } while(command == null); return command; } /** * Print out a list of valid command words. */ public void showCommands() { commands.showAll(); } /** * @return A line of text from the user. */ public String readLine() { return reader.nextLine(); } }