summaryrefslogtreecommitdiff
path: root/RGens/src/main/java/bjc/rgens/newparser/RGrammarBuilder.java
diff options
context:
space:
mode:
authorbjculkin <bjculkin@mix.wvu.edu>2017-03-21 19:29:27 -0400
committerbjculkin <bjculkin@mix.wvu.edu>2017-03-21 19:38:42 -0400
commit5444cd4db8a0fa41d25cd303c1145cadd112e12f (patch)
tree779f205becc1e1cded6ed1c307f295a2404ce22d /RGens/src/main/java/bjc/rgens/newparser/RGrammarBuilder.java
parentccb2510fadf19e5e1cda63d948fd482e25fc799d (diff)
Add formatter
Adds a formatter capable of taking in a parsed grammar and printing it out in a formatted form, capable of being reparsed.
Diffstat (limited to 'RGens/src/main/java/bjc/rgens/newparser/RGrammarBuilder.java')
-rw-r--r--RGens/src/main/java/bjc/rgens/newparser/RGrammarBuilder.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/RGens/src/main/java/bjc/rgens/newparser/RGrammarBuilder.java b/RGens/src/main/java/bjc/rgens/newparser/RGrammarBuilder.java
index 346e588..fb8003a 100644
--- a/RGens/src/main/java/bjc/rgens/newparser/RGrammarBuilder.java
+++ b/RGens/src/main/java/bjc/rgens/newparser/RGrammarBuilder.java
@@ -18,6 +18,10 @@ import static bjc.rgens.newparser.RuleCase.CaseType.*;
*
*/
public class RGrammarBuilder {
+ private static final String REFER_CASELEM = "\\[[^\\]]+\\]";
+
+ private static final String SPECIAL_CASELEM = "{[^}]}";
+
private IList<CaseElement> currentCase;
private Rule currRule;
@@ -91,8 +95,12 @@ public class RGrammarBuilder {
* @param csepart
*/
public void addCasePart(String csepart) {
- if(csepart.matches("\\[[^\\]]+\\]")) {
- currentCase.add(new CaseElement(RULEREF, csepart));
+ if(csepart.matches(SPECIAL_CASELEM)) {
+ /*
+ * Handle other cases.
+ */
+ } else if(csepart.matches(REFER_CASELEM)) {
+ currentCase.add(new CaseElement(RULEREF, csepart));
} else {
currentCase.add(new CaseElement(LITERAL, csepart));
}