summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2016-05-11 21:11:29 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2016-05-11 21:11:29 -0400
commitfd0a1a0a63818fc1098b01b561c636457c1284ba (patch)
treeb7800a87dba99b8a26c3e101cd3c0b71351c70da /BJC-Utils2/src
parentfff6dc5d43539af05ae2679640240b8545b36947 (diff)
Minor changes
Diffstat (limited to 'BJC-Utils2/src')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/funcutils/CompoundCollector.java11
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java28
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/ShuntingYard.java13
3 files changed, 23 insertions, 29 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/funcutils/CompoundCollector.java b/BJC-Utils2/src/main/java/bjc/utils/funcutils/CompoundCollector.java
index 715a6e5..ed8d05f 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/funcutils/CompoundCollector.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/funcutils/CompoundCollector.java
@@ -6,8 +6,6 @@ import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collector;
-import java.util.stream.Collector.Characteristics;
-
import bjc.utils.data.IHolder;
import bjc.utils.data.IPair;
import bjc.utils.data.Identity;
@@ -57,10 +55,8 @@ final class CompoundCollector<InitialType, AuxType1, AuxType2, FinalType1, Final
}
@Override
- public BinaryOperator<IHolder<IPair<AuxType1, AuxType2>>>
- combiner() {
- BinaryOperator<AuxType1> firstCombiner =
- firstCollector.combiner();
+ public BinaryOperator<IHolder<IPair<AuxType1, AuxType2>>> combiner() {
+ BinaryOperator<AuxType1> firstCombiner = firstCollector.combiner();
BinaryOperator<AuxType2> secondCombiner =
secondCollector.combiner();
@@ -82,8 +78,7 @@ final class CompoundCollector<InitialType, AuxType1, AuxType2, FinalType1, Final
return pair.bind((leftVal, rightVal) -> {
return new Pair<>(
firstCollector.finisher().apply(leftVal),
- secondCollector.finisher()
- .apply(rightVal));
+ secondCollector.finisher().apply(rightVal));
});
});
};
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java
index 2b97a79..5d044e1 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java
@@ -8,7 +8,9 @@ import java.util.Scanner;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
+import bjc.utils.data.IHolder;
import bjc.utils.data.IPair;
+import bjc.utils.data.Identity;
import bjc.utils.data.Pair;
import bjc.utils.exceptions.UnknownPragmaException;
import bjc.utils.funcdata.FunctionalStringTokenizer;
@@ -121,30 +123,30 @@ public class RuleBasedConfigReader<E> {
E state;
- try (Scanner inputSource = new Scanner(inputStream)) {
+ try (Scanner inputSource = new Scanner(inputStream, "\n")) {
state = initialState;
- boolean ruleOpen = false;
-
- while (inputSource.hasNextLine()) {
- String line = inputSource.nextLine();
+ IHolder<Boolean> ruleOpen = new Identity<>(false);
+ inputSource.forEachRemaining((line) -> {
if (line.startsWith("#") || line.startsWith("//")) {
// It's a comment
- continue;
+ return;
} else if (line.equals("")) {
- ruleOpen = endRule(state, ruleOpen);
+ ruleOpen.replace(endRule(state, ruleOpen.getValue()));
- continue;
+ return;
} else if (line.startsWith("\t")) {
- continueRule(state, ruleOpen, line);
+ continueRule(state, ruleOpen.getValue(), line);
} else {
- ruleOpen = startRule(state, ruleOpen, line);
+ ruleOpen.replace(
+ startRule(state, ruleOpen.getValue(), line));
}
- }
+ });
}
return state;
+
}
/**
@@ -185,8 +187,8 @@ public class RuleBasedConfigReader<E> {
}
private boolean startRule(E state, boolean ruleOpen, String line) {
- FunctionalStringTokenizer tokenizer = new FunctionalStringTokenizer(
- line, " ");
+ FunctionalStringTokenizer tokenizer =
+ new FunctionalStringTokenizer(line, " ");
String nextToken = tokenizer.nextToken();
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/ShuntingYard.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/ShuntingYard.java
index 8118faa..c1cd5c7 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/ShuntingYard.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/ShuntingYard.java
@@ -63,12 +63,11 @@ public class ShuntingYard<TokenType> {
}
private final class TokenShunter implements Consumer<String> {
- private IList<TokenType> output;
+ private IList<TokenType> output;
private Deque<String> stack;
private Function<String, TokenType> transform;
- public TokenShunter(IList<TokenType> outpt,
- Deque<String> stack,
+ public TokenShunter(IList<TokenType> outpt, Deque<String> stack,
Function<String, TokenType> transform) {
this.output = outpt;
this.stack = stack;
@@ -176,8 +175,7 @@ public class ShuntingYard<TokenType> {
* The function to use to transform strings to tokens
* @return A list of tokens in postfix notation
*/
- public IList<TokenType> postfix(
- IList<String> input,
+ public IList<TokenType> postfix(IList<String> input,
Function<String, TokenType> tokenTransformer) {
if (input == null) {
throw new NullPointerException("Input must not be null");
@@ -191,9 +189,8 @@ public class ShuntingYard<TokenType> {
input.forEach(new TokenShunter(output, stack, tokenTransformer));
- while (!stack.isEmpty()) {
- output.add(tokenTransformer.apply(stack.pop()));
- }
+ stack.forEach(
+ (token) -> output.add(tokenTransformer.apply(token)));
return output;
}