diff options
| author | bjculkin <bjculkin@mix.wvu.edu> | 2017-03-21 19:29:27 -0400 |
|---|---|---|
| committer | bjculkin <bjculkin@mix.wvu.edu> | 2017-03-21 19:38:42 -0400 |
| commit | 5444cd4db8a0fa41d25cd303c1145cadd112e12f (patch) | |
| tree | 779f205becc1e1cded6ed1c307f295a2404ce22d /RGens/src/main/java/bjc/rgens/newparser/RGrammarBuilder.java | |
| parent | ccb2510fadf19e5e1cda63d948fd482e25fc799d (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.java | 12 |
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)); } |
