diff options
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/parserutils')
3 files changed, 42 insertions, 30 deletions
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 1190281..d07d725 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java +++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java @@ -20,12 +20,12 @@ import bjc.utils.funcdata.FunctionalStringTokenizer; * type of the state object to use */ public class RuleBasedConfigReader<E> { - private Map<String, BiConsumer<FunctionalStringTokenizer, E>> pragmas; - private BiConsumer<FunctionalStringTokenizer, Pair<String, E>> startRule; private BiConsumer<FunctionalStringTokenizer, E> continueRule; private Consumer<E> endRule; + private Map<String, BiConsumer<FunctionalStringTokenizer, E>> pragmas; + /** * Create a new rule-based config reader * @@ -43,10 +43,15 @@ public class RuleBasedConfigReader<E> { this.startRule = startRule; this.continueRule = continueRule; this.endRule = endRule; - + this.pragmas = new HashMap<>(); } + public void addPragma(String pragName, + BiConsumer<FunctionalStringTokenizer, E> pragAct) { + pragmas.put(pragName, pragAct); + } + public E fromStream(InputStream is, E initState) { Scanner scn = new Scanner(is); @@ -67,7 +72,7 @@ public class RuleBasedConfigReader<E> { String nxtToken = stk.nextToken(); if (nxtToken.equals("#")) { - + // Do nothing, this is a comment } else if (nxtToken.equals("pragma")) { String tk = stk.nextToken(); @@ -87,16 +92,6 @@ public class RuleBasedConfigReader<E> { return stat; } - public void addPragma(String pragName, - BiConsumer<FunctionalStringTokenizer, E> pragAct) { - pragmas.put(pragName, pragAct); - } - - public void setStartRule( - BiConsumer<FunctionalStringTokenizer, Pair<String, E>> startRule) { - this.startRule = startRule; - } - public void setContinueRule( BiConsumer<FunctionalStringTokenizer, E> continueRule) { this.continueRule = continueRule; @@ -105,4 +100,9 @@ public class RuleBasedConfigReader<E> { public void setEndRule(Consumer<E> endRule) { this.endRule = endRule; } + + public void setStartRule( + BiConsumer<FunctionalStringTokenizer, Pair<String, E>> startRule) { + this.startRule = startRule; + } } 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 ace636e..8a036ce 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/ShuntingYard.java +++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/ShuntingYard.java @@ -19,7 +19,7 @@ import bjc.utils.funcdata.FunctionalList; */ public class ShuntingYard<E> { - private static enum Operator implements IPrecedent { + public static enum Operator implements IPrecedent { ADD(1), DIVIDE(4), MULTIPLY(3), SUBTRACT(2); private final int precedence; @@ -39,9 +39,6 @@ public class ShuntingYard<E> { } } - static { - } - /** * Holds all the shuntable operations */ @@ -64,6 +61,16 @@ public class ShuntingYard<E> { * * @param tok * The token representing the operator + */ + public void addOp(String tok, int i) { + this.addOp(tok, IPrecedent.newSimplePrecedent(i)); + } + + /** + * Add an operator to the list of shuntable operators + * + * @param tok + * The token representing the operator * @param prec * The precedence of the operator */ @@ -127,14 +134,4 @@ public class ShuntingYard<E> { public void removeOp(String tok) { ops.remove(tok); } - - /** - * Add an operator to the list of shuntable operators - * - * @param tok - * The token representing the operator - */ - public void addOp(String tok, int i) { - this.addOp(tok, IPrecedent.newSimplePrecedent(i)); - } }
\ No newline at end of file diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/UnknownPragmaException.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/UnknownPragmaException.java index fc97a44..88f38d4 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/UnknownPragmaException.java +++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/UnknownPragmaException.java @@ -2,11 +2,26 @@ package bjc.utils.parserutils; import java.util.InputMismatchException; +/** + * Represents a error from encountering a unknown pragma + * + * @author ben + * + */ public class UnknownPragmaException extends InputMismatchException { + /** + * Version id for serialization + */ + private static final long serialVersionUID = -4277573484926638662L; + + /** + * Create a new exception with the given cause + * + * @param m + * The cause for throwing this exception + */ public UnknownPragmaException(String m) { super(m); } - private static final long serialVersionUID = -4277573484926638662L; - } |
