From 0ea49dd4a52358f053c9be7138c392b16de05899 Mon Sep 17 00:00:00 2001 From: student Date: Fri, 17 Mar 2017 10:49:27 -0400 Subject: Move things around, and start on new parser. --- .../java/bjc/rgens/parser/GrammarReaderCLI.java | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 RGens/src/main/java/bjc/rgens/parser/GrammarReaderCLI.java (limited to 'RGens/src/main/java/bjc/rgens/parser/GrammarReaderCLI.java') 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 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 "); + 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+", " ")); + } + } + } +} -- cgit v1.2.3