diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-05 15:52:44 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2018-06-05 15:52:44 -0300 |
| commit | f25d1062a56a81b17348b799e6d4d7e1dc12a1cc (patch) | |
| tree | 1e2966389381204cf799732742b135fa85fad923 /src/main/java/bjc/rgens/parser/RGrammars.java | |
| parent | 0164b842d14675b0a28dd143d36923e690e75d27 (diff) | |
Templates pt.2
More work that leads towards getting templates working
Diffstat (limited to 'src/main/java/bjc/rgens/parser/RGrammars.java')
| -rwxr-xr-x | src/main/java/bjc/rgens/parser/RGrammars.java | 27 |
1 files changed, 16 insertions, 11 deletions
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<String, String> 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)); } } |
