summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2017-02-07 10:32:57 -0500
committerbculkin2442 <bjculkin@mix.wvu.edu>2017-02-07 10:32:57 -0500
commit3b07acb43c5f865c65094ae891f5a2dc791c8088 (patch)
tree45e65344aa4ff277c48834344c723cc57f4387a9
parent03838b1b6c0a71042b69b2cb3de5faaf7a526596 (diff)
Update
-rw-r--r--RGens/data/.DS_Storebin0 -> 6148 bytes
-rw-r--r--RGens/data/sample-grammars/.DS_Store (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/.DS_Store)bin6148 -> 6148 bytes
-rwxr-xr-xRGens/data/sample-grammars/24hr-rpg.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/24hr-rpg.gram)0
-rwxr-xr-xRGens/data/sample-grammars/anime.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/anime.gram)0
-rwxr-xr-xRGens/data/sample-grammars/art-objects.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/art-objects.gram)0
-rwxr-xr-xRGens/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-xRGens/data/sample-grammars/diablo-ii/.DS_Store (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/diablo-ii/.DS_Store)bin6148 -> 6148 bytes
-rwxr-xr-xRGens/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-xRGens/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-xRGens/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-xRGens/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-xRGens/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-xRGens/data/sample-grammars/dungeon-enviroment.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/dungeon-enviroment.gram)0
-rwxr-xr-xRGens/data/sample-grammars/fantasy-locations.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/fantasy-locations.gram)0
-rwxr-xr-xRGens/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-xRGens/data/sample-grammars/martial-arts.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/martial-arts.gram)0
-rwxr-xr-xRGens/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-xRGens/data/sample-grammars/part-creature.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/part-creature.gram)0
-rwxr-xr-xRGens/data/sample-grammars/pokeattacks.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/pokeattacks.gram)0
-rwxr-xr-xRGens/data/sample-grammars/rune.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/rune.gram)0
-rwxr-xr-xRGens/data/sample-grammars/superhero.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/superhero.gram)0
-rwxr-xr-xRGens/data/sample-grammars/tarotcard.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/tarotcard.gram)0
-rwxr-xr-xRGens/data/sample-grammars/technobabble.gram (renamed from RGens/src/main/java/bjc/RGens/parser/sample-grammars/technobabble.gram)0
-rwxr-xr-xRGens/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_Storebin6148 -> 6148 bytes
-rw-r--r--RGens/src/main/java/bjc/RGens/parser/GrammarReaderApp.java1
-rw-r--r--RGens/src/main/java/bjc/RGens/server/GrammarServer.java239
-rw-r--r--RGens/src/main/java/bjc/RGens/server/ReaderState.java3
-rw-r--r--RGens/src/main/java/bjc/RGens/server/ServerGrammarReader.java1
33 files changed, 192 insertions, 52 deletions
diff --git a/RGens/data/.DS_Store b/RGens/data/.DS_Store
new file mode 100644
index 0000000..0f90c6a
--- /dev/null
+++ b/RGens/data/.DS_Store
Binary files differ
diff --git a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/.DS_Store b/RGens/data/sample-grammars/.DS_Store
index db7be62..db7be62 100644
--- a/RGens/src/main/java/bjc/RGens/parser/sample-grammars/.DS_Store
+++ b/RGens/data/sample-grammars/.DS_Store
Binary files differ
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
index 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
Binary files differ
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
index 0f90c6a..5008ddf 100644
--- a/RGens/src/main/java/bjc/RGens/parser/.DS_Store
+++ b/RGens/src/main/java/bjc/RGens/parser/.DS_Store
Binary files differ
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;