summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/RGrammars.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/rgens/parser/RGrammars.java')
-rwxr-xr-x[-rw-r--r--]src/main/java/bjc/rgens/parser/RGrammars.java29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/main/java/bjc/rgens/parser/RGrammars.java b/src/main/java/bjc/rgens/parser/RGrammars.java
index f74a756..cc31bad 100644..100755
--- a/src/main/java/bjc/rgens/parser/RGrammars.java
+++ b/src/main/java/bjc/rgens/parser/RGrammars.java
@@ -16,20 +16,21 @@ import java.util.Map;
* @author Ben Culkin
*/
public class RGrammars {
- private static RGrammarSet gramSet;
+ private static ConfigSet cfgSet;
private static void loadSet() {
try {
- URI rsc = RGrammarTest.class.getResource("/server-config-sample.cfg").toURI();
+ URI rsc = RGrammarTest.class.getResource("/server-config-sample.gcfg").toURI();
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 = RGrammarSet.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));
}
}