From fb7d03388e298258563c22abda1bd46cdaf991b7 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Mon, 25 Apr 2016 22:11:28 -0400 Subject: General code cleanup, and some more GUI controls --- .../bjc/utils/parserutils/TokenTransformer.java | 55 +++++++++++----------- 1 file changed, 27 insertions(+), 28 deletions(-) (limited to 'BJC-Utils2/src/main/java/bjc/utils/parserutils/TokenTransformer.java') diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/TokenTransformer.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/TokenTransformer.java index 4727124..9fb64cf 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/TokenTransformer.java +++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/TokenTransformer.java @@ -12,26 +12,26 @@ import bjc.utils.data.Pair; import bjc.utils.funcdata.ITree; import bjc.utils.funcdata.Tree; -final class TokenTransformer implements Consumer { - private final class OperatorHandler - implements UnaryOperator>, ITree>> { - private T element; +final class TokenTransformer implements Consumer { + private final class OperatorHandler implements + UnaryOperator>, ITree>> { + private TokenType element; - public OperatorHandler(T element) { + public OperatorHandler(TokenType element) { this.element = element; } @Override - public IPair>, ITree> apply( - IPair>, ITree> pair) { - return pair.bind((queuedASTs, currentAST) -> { + public IPair>, ITree> apply( + IPair>, ITree> pair) { + return pair.bindLeft((queuedASTs) -> { return handleOperator(queuedASTs); }); } - private IPair>, ITree> handleOperator( - Deque> queuedASTs) { - ITree newAST; + private IPair>, ITree> + handleOperator(Deque> queuedASTs) { + ITree newAST; if (isSpecialOperator.test(element)) { newAST = handleSpecialOperator.apply(element) @@ -45,8 +45,8 @@ final class TokenTransformer implements Consumer { + queuedASTs.peek()); } - ITree rightAST = queuedASTs.pop(); - ITree leftAST = queuedASTs.pop(); + ITree rightAST = queuedASTs.pop(); + ITree leftAST = queuedASTs.pop(); newAST = new Tree<>(element, leftAST, rightAST); } @@ -57,15 +57,18 @@ final class TokenTransformer implements Consumer { } } - private IHolder>, ITree>> initialState; - private Predicate operatorPredicate; - private Predicate isSpecialOperator; - private Function>, ITree>> handleSpecialOperator; + private IHolder>, ITree>> initialState; + + private Predicate operatorPredicate; + + private Predicate isSpecialOperator; + private Function>, ITree>> handleSpecialOperator; public TokenTransformer( - IHolder>, ITree>> initialState, - Predicate operatorPredicate, Predicate isSpecialOperator, - Function>, ITree>> handleSpecialOperator) { + IHolder>, ITree>> initialState, + Predicate operatorPredicate, + Predicate isSpecialOperator, + Function>, ITree>> handleSpecialOperator) { this.initialState = initialState; this.operatorPredicate = operatorPredicate; this.isSpecialOperator = isSpecialOperator; @@ -73,20 +76,16 @@ final class TokenTransformer implements Consumer { } @Override - public void accept(T element) { + public void accept(TokenType element) { if (operatorPredicate.test(element)) { initialState.transform(new OperatorHandler(element)); } else { - ITree newAST = new Tree<>(element); + ITree newAST = new Tree<>(element); - initialState.doWith((pair) -> { - pair.doWith((queue, currentAST) -> { + initialState.transform((pair) -> { + return pair.bindLeft((queue) -> { queue.push(newAST); - }); - }); - initialState.transform((pair) -> { - return pair.bind((queue, currentAST) -> { return new Pair<>(queue, newAST); }); }); -- cgit v1.2.3