summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/RGrammarParser.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-09-05 12:24:51 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2018-09-05 12:24:51 -0300
commitad699d027fd9a63d7942fb455e7cfa775f726c43 (patch)
tree20a3aff7d7b985fb924fda421c2a758ccc013c74 /src/main/java/bjc/rgens/parser/RGrammarParser.java
parentb11e685001d37f5d2be91e36184fee10987ba798 (diff)
Add grammar name pragma
Diffstat (limited to 'src/main/java/bjc/rgens/parser/RGrammarParser.java')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarParser.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/bjc/rgens/parser/RGrammarParser.java b/src/main/java/bjc/rgens/parser/RGrammarParser.java
index bea2038..aae5c4a 100755
--- a/src/main/java/bjc/rgens/parser/RGrammarParser.java
+++ b/src/main/java/bjc/rgens/parser/RGrammarParser.java
@@ -70,6 +70,17 @@ public class RGrammarParser {
build.setInitialRule(bits.get(0));
});
+ pragmas.put("grammar-name", (body, build, level) -> {
+ List<String> bits = StringUtils.levelSplit(body, " ");
+
+ if (bits.size() != 1) {
+ String msg = "Must specify grammar name";
+ throw new GrammarException(msg);
+ }
+
+ build.name = bits.get(0);
+ });
+
pragmas.put("despace-rule", (body, build, level) -> {
List<String> bits = StringUtils.levelSplit(body, " ");
@@ -117,6 +128,7 @@ public class RGrammarParser {
build.setWeight(parts.get(0));
});
+
pragmas.put("enable-descent", (body, build, level) -> {
List<String> parts = StringUtils.levelSplit(body, " ");
@@ -132,6 +144,11 @@ public class RGrammarParser {
});
pragmas.put("enable-binomial", (body, build, level) -> {
+ // @NOTE 9/4/18
+ //
+ // This can be kind of hard to read right off. Is there
+ // a format to put stuff in that looks better and is
+ // more readable?
List<String> parts = StringUtils.levelSplit(body, " ");
if(parts.size() != 4) {