From 5ac98080a4e5929821565b572a0268294b80826a Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Tue, 17 Jul 2018 18:19:32 -0300 Subject: Swap to using for-each loops instead of for-each method --- src/main/java/bjc/rgens/parser/RGrammarParser.java | 14 +++++++------- .../bjc/rgens/parser/elements/InlineRuleCaseElement.java | 5 +++-- 2 files changed, 10 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/main/java/bjc/rgens/parser/RGrammarParser.java b/src/main/java/bjc/rgens/parser/RGrammarParser.java index a869179..a1fc0e9 100755 --- a/src/main/java/bjc/rgens/parser/RGrammarParser.java +++ b/src/main/java/bjc/rgens/parser/RGrammarParser.java @@ -202,12 +202,12 @@ public class RGrammarParser { try { RGrammarBuilder build = new RGrammarBuilder(); - reader.forEachBlock((block) -> { + for(Block block : reader) { if(DEBUG) System.err.printf("Handling top-level block (%s)\n", block); handleBlock(build, block.contents, 0, block.startLine); - }); + } if(LINES) System.err.printf("%d ", reader.getBlock().endLine); @@ -270,7 +270,7 @@ public class RGrammarParser { String dlm = String.format(TMPL_PRAGMA_BLOCK_DELIM, level); try (BlockReader pragmaReader = new SimpleBlockReader(dlm, new StringReader(block))) { try { - pragmaReader.forEachBlock((pragma) -> { + for(Block pragma : pragmaReader) { pragma.lineOffset = lineOffset; if(DEBUG) @@ -296,7 +296,7 @@ public class RGrammarParser { } handlePragma(pragmaBody, build, level, pragma.startLine + lineOffset); - }); + } } catch (GrammarException gex) { Block pragma = pragmaReader.getBlock(); String msg = String.format("Error in pragma: (%s)", pragma); @@ -352,12 +352,12 @@ public class RGrammarParser { String declContents = declBlock.contents; Rule rl = handleRuleDecl(build, declContents, lineOffset + declBlock.startLine); - ruleReader.forEachBlock((block) -> { + for(Block block : ruleReader) { /* Ignore comment lines. */ if(block.contents.trim().startsWith("#")) return; handleRuleCase(block.contents, build, rl, block.startLine + lineOffset); - }); + } } else { /* Rule with a declaration followed by a single case. */ handleRuleDecl(build, ruleBlock, lineOffset); @@ -387,7 +387,7 @@ public class RGrammarParser { declSep = declContents.indexOf(' '); if (declSep == -1) { - String msg = "A rule must be given at least one case in its declaration, and seperated from that case by \u2192"; + String msg = "A rule must be given at least one case in its declaration, and seperated from that case by \u2192 or ' '"; throw new GrammarException(msg); } diff --git a/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java b/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java index 12b6f14..917dd33 100644 --- a/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java +++ b/src/main/java/bjc/rgens/parser/elements/InlineRuleCaseElement.java @@ -6,6 +6,7 @@ import bjc.rgens.parser.RGrammarParser; import bjc.utils.data.IPair; import bjc.utils.funcdata.FunctionalList; import bjc.utils.funcdata.IList; +import bjc.utils.funcutils.StringUtils; import bjc.utils.gen.WeightedRandom; public class InlineRuleCaseElement extends CaseElement { @@ -19,8 +20,8 @@ public class InlineRuleCaseElement extends CaseElement { for(String part : parts) { String[] partArr; - if(part.contains("|")) { - partArr = part.split("\\|"); + if(StringUtils.levelContains(part, "|")) { + partArr = StringUtils.levelSplit(part, "||").toArray(new String[0]); } else { partArr = new String[] {part}; } -- cgit v1.2.3