Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.util.StringTokenizer;
- /**
- * This parser reads user input and tries to interpret
- * it as an "Adventure" command. Every time it is called it reads a line
- * from the terminal and tries to interpret the line as a two word command.
- * It returns the command as an object of class Command.
- *
- * The parser has a set of known command words. It
- * checks user input against the known commands, and if the input is not one of
- * the known commands, it returns a command object that is marked as an
- * unknown command.
- *
- * @author Muhammad Naufaldillah
- * @version 24 Novemebr 2020
- */
- public class Parser
- {
- private CommandWords commands; // holds all valid command words
- public Parser()
- {
- commands = new CommandWords();
- }
- public Command getCommand()
- {
- String inputLine = ""; // will hold the full line
- String word1;
- String word2;
- System.out.print("> "); // print prompt
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- try
- {
- inputLine = reader.readLine();
- }
- catch(java.io.IOException exc)
- {
- System.out.println("There was an error during reading: " + exc.getMessage());
- }
- StringTokenizer tokenizer = new StringTokenizer(inputLine);
- if(tokenizer.hasMoreTokens())
- {
- word1 = tokenizer.nextToken(); // get first word
- }
- else
- {
- word1 = null;
- }
- if(tokenizer.hasMoreTokens())
- {
- word2 = tokenizer.nextToken(); // get second word word
- }
- else
- {
- word2 = null;
- }
- // note: we just ignore the rest of the input line.
- // Now check whether this word is known. If so, create a command
- // with it. If not, create a "null" command (for unknown command).
- if(commands.isCommand(word1))
- {
- return new Command(word1, word2);
- }
- else
- {
- return new Command(null, word2);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement