diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2017-02-07 10:32:57 -0500 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2017-02-07 10:32:57 -0500 |
| commit | 3b07acb43c5f865c65094ae891f5a2dc791c8088 (patch) | |
| tree | 45e65344aa4ff277c48834344c723cc57f4387a9 | |
| parent | 03838b1b6c0a71042b69b2cb3de5faaf7a526596 (diff) | |
Update
| -rw-r--r-- | RGens/data/.DS_Store | bin | 0 -> 6148 bytes | |||
| -rw-r--r-- | RGens/data/sample-grammars/.DS_Store (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/.DS_Store) | bin | 6148 -> 6148 bytes | |||
| -rwxr-xr-x | RGens/data/sample-grammars/24hr-rpg.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/24hr-rpg.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/anime.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/anime.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/art-objects.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/art-objects.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/awe-names.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/awe-names.gram) | 0 | ||||
| -rw-r--r-- | RGens/data/sample-grammars/college.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/college.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/diablo-ii/.DS_Store (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/.DS_Store) | bin | 6148 -> 6148 bytes | |||
| -rwxr-xr-x | RGens/data/sample-grammars/diablo-ii/diabloii.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloii.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/diablo-ii/diabloiiitems.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiiitems.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/diablo-ii/diabloiiperish.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiiperish.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/diablo-ii/diabloiiprefixes.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiiprefixes.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/diablo-ii/diabloiisuffixes.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiisuffixes.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/dungeon-enviroment.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/dungeon-enviroment.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/fantasy-locations.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/fantasy-locations.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/genre-fiction.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/genre-fiction.gram) | 0 | ||||
| -rw-r--r-- | RGens/data/sample-grammars/horror.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/horror.gram) | 0 | ||||
| -rw-r--r-- | RGens/data/sample-grammars/insults.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/insults.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/martial-arts.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/martial-arts.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/mary-sue.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/mary-sue.gram) | 0 | ||||
| -rw-r--r-- | RGens/data/sample-grammars/mission.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/mission.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/part-creature.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/part-creature.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/pokeattacks.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/pokeattacks.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/rune.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/rune.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/superhero.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/superhero.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/tarotcard.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/tarotcard.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/technobabble.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/technobabble.gram) | 0 | ||||
| -rwxr-xr-x | RGens/data/sample-grammars/zadrons-pouch.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/zadrons-pouch.gram) | 0 | ||||
| -rw-r--r-- | RGens/src/main/java/bjc/RGens/parser/.DS_Store | bin | 6148 -> 6148 bytes | |||
| -rw-r--r-- | RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java | 1 | ||||
| -rw-r--r-- | RGens/src/main/java/bjc/RGens/server/GrammarServer.java | 239 | ||||
| -rw-r--r-- | RGens/src/main/java/bjc/RGens/server/ReaderState.java | 3 | ||||
| -rw-r--r-- | RGens/src/main/java/bjc/RGens/server/ServerGrammarReader.java | 1 |
33 files changed, 192 insertions, 52 deletions
diff --git a/RGens/data/.DS_Store b/RGens/data/.DS_Store Binary files differnew file mode 100644 index 0000000..0f90c6a --- /dev/null +++ b/RGens/data/.DS_Store diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/.DS_Store b/RGens/data/sample-grammars/.DS_Store Binary files differindex db7be62..db7be62 100644 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/.DS_Store +++ b/RGens/data/sample-grammars/.DS_Store diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/24hr-rpg.gram b/RGens/data/sample-grammars/24hr-rpg.gram index 344d9a8..344d9a8 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/24hr-rpg.gram +++ b/RGens/data/sample-grammars/24hr-rpg.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/anime.gram b/RGens/data/sample-grammars/anime.gram index 0cc21d8..0cc21d8 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/anime.gram +++ b/RGens/data/sample-grammars/anime.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/art-objects.gram b/RGens/data/sample-grammars/art-objects.gram index 0a97edb..0a97edb 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/art-objects.gram +++ b/RGens/data/sample-grammars/art-objects.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/awe-names.gram b/RGens/data/sample-grammars/awe-names.gram index 5ecc898..5ecc898 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/awe-names.gram +++ b/RGens/data/sample-grammars/awe-names.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/college.gram b/RGens/data/sample-grammars/college.gram index f1bee8e..f1bee8e 100644 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/college.gram +++ b/RGens/data/sample-grammars/college.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/.DS_Store b/RGens/data/sample-grammars/diablo-ii/.DS_Store Binary files differindex 5008ddf..5008ddf 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/.DS_Store +++ b/RGens/data/sample-grammars/diablo-ii/.DS_Store diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloii.gram b/RGens/data/sample-grammars/diablo-ii/diabloii.gram index d16b4f9..d16b4f9 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloii.gram +++ b/RGens/data/sample-grammars/diablo-ii/diabloii.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiiitems.gram b/RGens/data/sample-grammars/diablo-ii/diabloiiitems.gram index c6abc09..c6abc09 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiiitems.gram +++ b/RGens/data/sample-grammars/diablo-ii/diabloiiitems.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiiperish.gram b/RGens/data/sample-grammars/diablo-ii/diabloiiperish.gram index 26117d6..26117d6 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiiperish.gram +++ b/RGens/data/sample-grammars/diablo-ii/diabloiiperish.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiiprefixes.gram b/RGens/data/sample-grammars/diablo-ii/diabloiiprefixes.gram index e9f2072..e9f2072 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiiprefixes.gram +++ b/RGens/data/sample-grammars/diablo-ii/diabloiiprefixes.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiisuffixes.gram b/RGens/data/sample-grammars/diablo-ii/diabloiisuffixes.gram index 66e264e..66e264e 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/diabloiisuffixes.gram +++ b/RGens/data/sample-grammars/diablo-ii/diabloiisuffixes.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/dungeon-enviroment.gram b/RGens/data/sample-grammars/dungeon-enviroment.gram index f521125..f521125 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/dungeon-enviroment.gram +++ b/RGens/data/sample-grammars/dungeon-enviroment.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/fantasy-locations.gram b/RGens/data/sample-grammars/fantasy-locations.gram index 63a7dca..63a7dca 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/fantasy-locations.gram +++ b/RGens/data/sample-grammars/fantasy-locations.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/genre-fiction.gram b/RGens/data/sample-grammars/genre-fiction.gram index 09b0850..09b0850 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/genre-fiction.gram +++ b/RGens/data/sample-grammars/genre-fiction.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/horror.gram b/RGens/data/sample-grammars/horror.gram index 1e73911..1e73911 100644 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/horror.gram +++ b/RGens/data/sample-grammars/horror.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/insults.gram b/RGens/data/sample-grammars/insults.gram index 1b3881b..1b3881b 100644 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/insults.gram +++ b/RGens/data/sample-grammars/insults.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/martial-arts.gram b/RGens/data/sample-grammars/martial-arts.gram index ac22306..ac22306 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/martial-arts.gram +++ b/RGens/data/sample-grammars/martial-arts.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/mary-sue.gram b/RGens/data/sample-grammars/mary-sue.gram index b01a3ca..b01a3ca 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/mary-sue.gram +++ b/RGens/data/sample-grammars/mary-sue.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/mission.gram b/RGens/data/sample-grammars/mission.gram index 9dce28a..9dce28a 100644 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/mission.gram +++ b/RGens/data/sample-grammars/mission.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/part-creature.gram b/RGens/data/sample-grammars/part-creature.gram index d729e44..d729e44 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/part-creature.gram +++ b/RGens/data/sample-grammars/part-creature.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/pokeattacks.gram b/RGens/data/sample-grammars/pokeattacks.gram index 7f943ba..7f943ba 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/pokeattacks.gram +++ b/RGens/data/sample-grammars/pokeattacks.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/rune.gram b/RGens/data/sample-grammars/rune.gram index 05332e9..05332e9 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/rune.gram +++ b/RGens/data/sample-grammars/rune.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/superhero.gram b/RGens/data/sample-grammars/superhero.gram index c4f6e15..c4f6e15 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/superhero.gram +++ b/RGens/data/sample-grammars/superhero.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/tarotcard.gram b/RGens/data/sample-grammars/tarotcard.gram index 9fd68a8..9fd68a8 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/tarotcard.gram +++ b/RGens/data/sample-grammars/tarotcard.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/technobabble.gram b/RGens/data/sample-grammars/technobabble.gram index 451f1f8..451f1f8 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/technobabble.gram +++ b/RGens/data/sample-grammars/technobabble.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/zadrons-pouch.gram b/RGens/data/sample-grammars/zadrons-pouch.gram index 48b6e07..48b6e07 100755 --- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/zadrons-pouch.gram +++ b/RGens/data/sample-grammars/zadrons-pouch.gram diff --git a/RGens/src/main/java/bjc/RGens/parser/.DS_Store b/RGens/src/main/java/bjc/RGens/parser/.DS_Store Binary files differindex 0f90c6a..5008ddf 100644 --- a/RGens/src/main/java/bjc/RGens/parser/.DS_Store +++ b/RGens/src/main/java/bjc/RGens/parser/.DS_Store diff --git a/RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java b/RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java index 1939c5e..6a7eb26 100644 --- a/RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java +++ b/RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java @@ -40,7 +40,6 @@ public class GrammarReaderApp { doSingleFile(); } - @SuppressWarnings("null") private static void doSingleFile() { File gramFile = SimpleFileDialog.getOpenFile(null, "Choose Grammar File", ".gram"); diff --git a/RGens/src/main/java/bjc/RGens/server/GrammarServer.java b/RGens/src/main/java/bjc/RGens/server/GrammarServer.java index 180ee98..afeb120 100644 --- a/RGens/src/main/java/bjc/RGens/server/GrammarServer.java +++ b/RGens/src/main/java/bjc/RGens/server/GrammarServer.java @@ -11,7 +11,6 @@ import java.io.IOException; import java.io.FileInputStream; import java.util.Scanner; -import java.util.function.Supplier; public class GrammarServer { private Scanner scn; @@ -46,25 +45,18 @@ public class GrammarServer { System.out.println("GrammarServer Commands:"); System.out.println("\tm: Print command help"); System.out.println("\te: Exit GrammarServer"); - System.out.println("\tl: Load grammar from file"); - System.out.println("\ts: Show loaded grammars"); + System.out.println("\tl: Load from file"); + System.out.println("\ts: Show information"); System.out.println("\tg: Generate text"); break; case 'g': serv.generateText(); break; case 's': - // @TODO expand to general show stuff method - System.out.printf("Currently loaded grammars (%d total):\n", - serv.loadedGrammars.getSize()); - - serv.loadedGrammars.forEachKey(key -> { - System.out.println("\t" + key); - }); - + serv.showMode(); break; case 'l': - serv.loadGrammar(); + serv.loadMode(); break; default: System.out.println("? Unrecognized Command"); @@ -78,59 +70,165 @@ public class GrammarServer { System.out.println("GrammarServer exiting"); } - private void generateText() { - System.out.println("Entering Generate Mode"); - - System.out.print("(Generate Mode) Enter a command (m for help): "); + private void loadMode() { + System.out.println("Entering Load Mode"); + System.out.print("(Load Mode) Enter a command (m for help):"); char comm = scn.nextLine().charAt(0); while(comm != 'e') { switch(comm) { case 'm': - System.out.println("GrammarServer Generate Mode Commands: "); + System.out.println("GrammarServer Load Mode Commands"); System.out.println("\tm: Show command help"); - System.out.println("\tx: Generate from exported rules"); System.out.println("\te: Exit Generate Mode"); + System.out.println("\tg: Load grammar from a file"); + System.out.println("\tc: Load configuration from a file"); + break; + case 'g': + loadGrammar(); + break; + case 'c': + loadConfig(); + break; + default: + System.out.println("? Unrecognized Command"); + } + + System.out.print("(Load Mode) Enter a command (m for help):"); + comm = scn.nextLine().charAt(0); + } + + System.out.println("Exiting Load Mode"); + } + + private void loadConfig() { + System.out.print("Enter the file to load configuration from: "); + + String fileName = scn.nextLine().trim(); + + File inputFile = new File(fileName); + + try(FileInputStream inputStream = new FileInputStream(inputFile)) { + try(Scanner fle = new Scanner(inputStream)) { + while(fle.hasNextLine()) { + String line = fle.nextLine().trim(); + + String gramName = line.substring(0, line.indexOf(' ')); + String gramPath = line.substring(line.indexOf(' ') + 1, line.length()); + + loadGrammar(gramName, gramPath); + } + } + } catch(IOException ioex) { + System.out.printf("? Error reading configuration from file" + + " (reason: %s)", ioex.getMessage()); + } + } + + private void showMode() { + System.out.println("Entering Show Mode"); + + System.out.print("(Show Mode) Enter a command (m for help): "); + + char comm = scn.nextLine().charAt(0); + + while(comm != 'e') { + switch(comm) { + case 'm': + System.out.println("GrammarServer Show Mode Commands: "); + System.out.println("\tm: Show command help"); + System.out.println("\tl: Show loaded grammars"); + System.out.println("\tr: Show rules from a grammar"); + System.out.println("\tx: Show exported rules"); + System.out.println("\te: Exit Show Mode"); + break; + case 'r': + showGrammarRules(); break; case 'x': - System.out.print("Enter the name of the rule to generate" - + " (l to list, enter to cancel): "); + System.out.printf("Currently exported rules (%d total):\n", + exportedRules.getSize()); - String ruleName = scn.nextLine().trim(); + exportedRules.forEachKey(key -> { + System.out.println("\t" + key); + }); + break; + case 'l': + System.out.printf("Currently loaded grammars (%d total):\n", + loadedGrammars.getSize()); - while(true) { - if(ruleName.equals("")) break; + loadedGrammars.forEachKey(key -> { + System.out.println("\t" + key); + }); + break; + default: + System.out.println("? Unrecognized command"); + break; + } - if(ruleName.equals("l")) { - System.out.println("Current exported rules: "); - exportedRules.forEachKey(key -> { - System.out.println("\t" + key); - }); - } else if (exportedRules.containsKey(ruleName)) { - String ruleResult = ListUtils.collapseTokens( - exportedRules.get(ruleName) - .generateListValues(ruleName, " ")); + System.out.print("(Show Mode) Enter a command (m for help): "); - System.out.println("Generated Result: "); - System.out.println("\t" + ruleResult.replaceAll("\\s+", " ")); + comm = scn.nextLine().charAt(0); + } - System.out.print("Generate again from this rule? (yes/no)"); - String resp = scn.nextLine().trim(); - if(resp.equalsIgnoreCase("yes")) { - continue; - } - } else { - System.out.println("? Unrecognized external rule"); - } + System.out.println("Exiting Show Mode"); + } - System.out.print("Enter the name of the rule to generate" - + " (l to list, enter to cancel): "); + private void showGrammarRules() { + System.out.print("Enter the name of the grammar (l to list): "); + String gramName = scn.nextLine().trim(); - ruleName = scn.nextLine().trim(); - } + do { + if(gramName.equals("")) break; + + if(gramName.equals("l")) { + System.out.printf("Currently loaded grammars (%d total):\n", + loadedGrammars.getSize()); + + loadedGrammars.forEachKey(key -> { + System.out.println("\t" + key); + }); + } else if (loadedGrammars.containsKey(gramName)) { + WeightedGrammar<String> gram = loadedGrammars.get(gramName); + + IList<String> ruleNames = gram.getRuleNames(); + + System.out.printf("Rules for grammar %s (%d total)\n", + gramName, ruleNames.getSize()); + + ruleNames.forEach(rule -> { + System.out.println("\t" + rule); + }); + break; + } else { + System.out.println("? Unrecognized grammar name"); + } + + System.out.print("Enter the name of the grammar (l to list): "); + gramName = scn.nextLine().trim(); + } while(true); + } + + private void generateText() { + System.out.println("Entering Generate Mode"); + + System.out.print("(Generate Mode) Enter a command (m for help): "); + + char comm = scn.nextLine().charAt(0); + + while(comm != 'e') { + switch(comm) { + case 'm': + System.out.println("GrammarServer Generate Mode Commands: "); + System.out.println("\tm: Show command help"); + System.out.println("\tx: Generate from exported rules"); + System.out.println("\te: Exit Generate Mode"); + break; + case 'x': + generateExportedRule(); break; default: System.out.println("? Unrecognized command"); @@ -144,6 +242,46 @@ public class GrammarServer { System.out.println("Exiting Generate Mode"); } + private void generateExportedRule() { + System.out.print("Enter the name of the rule to generate" + + " (l to list, enter to cancel): "); + + String ruleName = scn.nextLine().trim(); + + while(true) { + if(ruleName.equals("")) break; + + if(ruleName.equals("l")) { + System.out.println("Current exported rules: "); + exportedRules.forEachKey(key -> { + System.out.println("\t" + key); + }); + } else if (exportedRules.containsKey(ruleName)) { + String ruleResult = ListUtils.collapseTokens( + exportedRules.get(ruleName) + .generateListValues(ruleName, " ")); + + System.out.println("Generated Result: "); + System.out.println("\t" + ruleResult.replaceAll("\\s+", " ")); + + System.out.print("Generate again from this rule? (yes/no) (yes by default): "); + + String resp = scn.nextLine().trim(); + + if(resp.equalsIgnoreCase("yes") || resp.equals("")) { + continue; + } + } else { + System.out.println("? Unrecognized external rule"); + } + + System.out.print("Enter the name of the rule to generate" + + " (l to list, enter to cancel): "); + + ruleName = scn.nextLine().trim(); + } + } + private void loadGrammar() { System.out.print("Enter path to load grammar from: "); @@ -164,6 +302,12 @@ public class GrammarServer { grammarName = inputName; } + doLoadGrammar(grammarName, grammarPath); + + return; + } + + private void doLoadGrammar(String grammarName, String grammarPath) { System.out.printf("Loading grammar (named %s) from path %s\n", grammarName, grammarPath); @@ -183,6 +327,7 @@ public class GrammarServer { + " (reason: %s)", ioex.getMessage()); } - return; + System.out.printf("Loaded grammar (named %s) from path %s\n", + grammarName, grammarPath); } } diff --git a/RGens/src/main/java/bjc/RGens/server/ReaderState.java b/RGens/src/main/java/bjc/RGens/server/ReaderState.java index 9285f7b..3a12ed6 100644 --- a/RGens/src/main/java/bjc/RGens/server/ReaderState.java +++ b/RGens/src/main/java/bjc/RGens/server/ReaderState.java @@ -1,8 +1,5 @@ package bjc.RGens.server; -import java.io.IOException; -import java.nio.file.Path; -import java.util.Stack; import java.util.function.Supplier; import bjc.utils.funcdata.FunctionalList; diff --git a/RGens/src/main/java/bjc/RGens/server/ServerGrammarReader.java b/RGens/src/main/java/bjc/RGens/server/ServerGrammarReader.java index cdd07ee..9314c0c 100644 --- a/RGens/src/main/java/bjc/RGens/server/ServerGrammarReader.java +++ b/RGens/src/main/java/bjc/RGens/server/ServerGrammarReader.java @@ -6,7 +6,6 @@ import java.io.InputStream; import java.util.Random; import java.util.function.BiFunction; import java.util.function.Predicate; -import java.util.function.Supplier; import bjc.utils.data.IPair; import bjc.utils.data.Pair; |
