From f25d1062a56a81b17348b799e6d4d7e1dc12a1cc Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Tue, 5 Jun 2018 15:52:44 -0300 Subject: Templates pt.2 More work that leads towards getting templates working --- src/main/java/bjc/rgens/parser/RGrammars.java | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'src/main/java/bjc/rgens/parser/RGrammars.java') diff --git a/src/main/java/bjc/rgens/parser/RGrammars.java b/src/main/java/bjc/rgens/parser/RGrammars.java index ad94388..cc31bad 100755 --- a/src/main/java/bjc/rgens/parser/RGrammars.java +++ b/src/main/java/bjc/rgens/parser/RGrammars.java @@ -16,7 +16,7 @@ import java.util.Map; * @author Ben Culkin */ public class RGrammars { - private static RGrammarSet gramSet; + private static ConfigSet cfgSet; private static void loadSet() { try { @@ -24,12 +24,13 @@ public class RGrammars { Map env = new HashMap<>(); env.put("create", "true"); + /* Ensure we can get at the file we need */ @SuppressWarnings("unused") FileSystem zipfs = FileSystems.newFileSystem(rsc, env); Path cfgPath = Paths.get(rsc); - gramSet = ConfigLoader.fromConfigFile(cfgPath); + cfgSet = ConfigLoader.fromConfigFile(cfgPath); } catch (IOException | URISyntaxException ex) { RuntimeException rtex = new RuntimeException("Could not load grammars"); @@ -49,19 +50,23 @@ public class RGrammars { * If something went wrong. */ public static String generateExport(String exportName) throws GrammarException { - if (gramSet == null) + if (cfgSet == null) loadSet(); - if (!gramSet.getExportedRules().contains(exportName)) { - throw new GrammarException(String.format("No exported rule named %s", exportName)); - } + for(RGrammarSet gramSet : cfgSet.grammars.values()) { + if (!gramSet.getExportedRules().contains(exportName)) { + continue; + } + + RGrammar gram = gramSet.getExportSource(exportName); - RGrammar gram = gramSet.getExportSource(exportName); + String res = gram.generate(exportName); + if (exportName.contains("+")) + res = res.replaceAll("\\s+", ""); - String res = gram.generate(exportName); - if (exportName.contains("+")) - res = res.replaceAll("\\s+", ""); + return res; + } - return res; + throw new GrammarException(String.format("No exported rule named %s", exportName)); } } -- cgit v1.2.3