summaryrefslogtreecommitdiff
path: root/RGens/src/main/java/bjc/rgens/parser/GrammarReaderCLI.java
diff options
context:
space:
mode:
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+", " "));
+ }
+ }
+ }
+}