From 05c9922b30cd0dcd2a452673c2e155215d074b19 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Tue, 5 Jun 2018 22:09:23 -0300 Subject: Templates pt. 3 Templates should now work, though there is no syntax to reference them from rules yet In addition, several internal things have been changed so as to improve code quality --- src/main/java/bjc/rgens/parser/RGrammarTest.java | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/main/java/bjc/rgens/parser/RGrammarTest.java') diff --git a/src/main/java/bjc/rgens/parser/RGrammarTest.java b/src/main/java/bjc/rgens/parser/RGrammarTest.java index 25f76e7..8193fa3 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarTest.java +++ b/src/main/java/bjc/rgens/parser/RGrammarTest.java @@ -1,10 +1,13 @@ package bjc.rgens.parser; +import bjc.rgens.parser.templates.GrammarTemplate; + import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Random; /** * Test for new grammar syntax. @@ -29,6 +32,10 @@ public class RGrammarTest { for(RGrammarSet gramSet : cfgSet.grammars.values()) { testGrammarSet(gramSet); } + + for(GrammarTemplate template : cfgSet.templates.values()) { + testTemplate(template, cfgSet.grammars.get("default")); + } } catch (IOException ioex) { ioex.printStackTrace(); } catch (URISyntaxException urisex) { @@ -36,6 +43,26 @@ public class RGrammarTest { } } + private static void testTemplate(GrammarTemplate template, RGrammarSet set) { + System.out.printf("Generating for template %s\n", template); + + Random rnd = new Random(); + + for(int i = 0; i < 10; i++) { + GenerationState state = GenerationState.fromGrammar(rnd, set.exportGrammar); + + template.generate(state); + + String res = state.contents.toString(); + + if(res.length() > 120) { + System.out.printf("\t\n\tContents: %s\n\t\n", res); + } else { + System.out.printf("\tContents: %s\n", res); + } + } + } + private static void testGrammarSet(RGrammarSet gramSet) { /* Generate rule suggestions for all the grammars in the set. */ for (String gramName : gramSet.getGrammars()) { -- cgit v1.2.3