summaryrefslogtreecommitdiff
path: root/RGens/src/main/java/bjc/rgens/parser/GrammarReaderCLI.java
diff options
context:
space:
mode:
authorstudent <student@student-OptiPlex-9020>2017-03-17 10:49:27 -0400
committerstudent <student@student-OptiPlex-9020>2017-03-17 10:49:27 -0400
commit0ea49dd4a52358f053c9be7138c392b16de05899 (patch)
tree802e275aaf279480ee8626136f56bfa1fbab6845 /RGens/src/main/java/bjc/rgens/parser/GrammarReaderCLI.java
parent36cf3a0f0604ef43ce838ff6e9a7fc4e7c299522 (diff)
Move things around, and start on new parser.
Diffstat (limited to 'RGens/src/main/java/bjc/rgens/parser/GrammarReaderCLI.java')
-rw-r--r--RGens/src/main/java/bjc/rgens/parser/GrammarReaderCLI.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/RGens/src/main/java/bjc/rgens/parser/GrammarReaderCLI.java b/RGens/src/main/java/bjc/rgens/parser/GrammarReaderCLI.java
new file mode 100644
index 0000000..b8eac35
--- /dev/null
+++ b/RGens/src/main/java/bjc/rgens/parser/GrammarReaderCLI.java
@@ -0,0 +1,61 @@
+package bjc.rgens.parser;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.file.Paths;
+
+import bjc.utils.funcutils.ListUtils;
+import bjc.utils.gen.WeightedGrammar;
+
+/**
+ * App that reads a grammar from a file and generates results
+ *
+ * @author ben
+ *
+ */
+public class GrammarReaderCLI {
+ private static WeightedGrammar<String> grammar = null;
+
+ /**
+ * Main application method
+ *
+ * @param args
+ * CLI args
+ */
+ public static void main(String[] args) {
+ if (args.length == 0) {
+ GrammarReaderApp.main(args);
+ } else {
+ String fName = args[0];
+
+ if (fName.equalsIgnoreCase("--help")) {
+ System.out.println(
+ "Usage: java -jar GrammarReader.jar <file-name> <init-rule> <num-res>");
+ System.exit(0);
+ }
+
+ String ruleName = args[1];
+
+ try (FileInputStream fStream = new FileInputStream(fName)) {
+ grammar = RBGrammarReader.fromPath(Paths.get(fName, ""));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ if (ruleName.equalsIgnoreCase("--list-rules")) {
+ grammar.getRuleNames().forEach(System.out::println);
+
+ System.exit(0);
+ }
+
+ int rCount = Integer.parseInt(args[2]);
+
+ for (int i = 0; i < rCount; i++) {
+ String ruleResult = ListUtils.collapseTokens(
+ grammar.generateListValues(ruleName, " "));
+
+ System.out.println(ruleResult.replaceAll("\\s+", " "));
+ }
+ }
+ }
+}