From d4ca769e542b2489b1e23cfcbdc3a0b7275b87cd Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Mon, 13 Apr 2020 18:40:41 -0400 Subject: Cleanup pass Cleanup pass to uniformize things --- .../bjc/utils/parserutils/TokenTransformer.java | 56 ++++++++++------------ 1 file changed, 26 insertions(+), 30 deletions(-) (limited to 'base/src/main/java/bjc/utils/parserutils/TokenTransformer.java') diff --git a/base/src/main/java/bjc/utils/parserutils/TokenTransformer.java b/base/src/main/java/bjc/utils/parserutils/TokenTransformer.java index 7ad8b91..6cf2da5 100644 --- a/base/src/main/java/bjc/utils/parserutils/TokenTransformer.java +++ b/base/src/main/java/bjc/utils/parserutils/TokenTransformer.java @@ -20,7 +20,8 @@ final class TokenTransformer implements Consumer { /* * Handle operators */ - private final class OperatorHandler implements UnaryOperator> { + private final class OperatorHandler + implements UnaryOperator> { /* The handled element. */ private final TokenType element; @@ -32,14 +33,14 @@ final class TokenTransformer implements Consumer { @Override public ConstructorState apply(final ConstructorState pair) { /* - * Replace the current AST with the result of handling - * an operator + * Replace the current AST with the result of handling an operator */ - return new ConstructorState<>(pair.bindLeft( - queuedASTs -> handleOperator(queuedASTs))); + return new ConstructorState<>( + pair.bindLeft(queuedASTs -> handleOperator(queuedASTs))); } - private ConstructorState handleOperator(final Deque> queuedASTs) { + private ConstructorState + handleOperator(final Deque> queuedASTs) { /* * The AST we're going to hand back */ @@ -48,14 +49,13 @@ final class TokenTransformer implements Consumer { /* * Handle special operators */ - if(isSpecialOperator.test(element)) { + if (isSpecialOperator.test(element)) { newAST = handleSpecialOperator.apply(element).apply(queuedASTs); } else { /* - * Error if we don't have enough for a binary - * operator + * Error if we don't have enough for a binary operator */ - if(queuedASTs.size() < 2) { + if (queuedASTs.size() < 2) { final String msg = String.format( "Attempted to parse binary operator without enough operands\n\tProblem operator is: %s\n\tPossible operand is: %s", element.toString(), queuedASTs.peek().toString()); @@ -67,7 +67,7 @@ final class TokenTransformer implements Consumer { * Grab the two operands */ final ITree right = queuedASTs.pop(); - final ITree left = queuedASTs.pop(); + final ITree left = queuedASTs.pop(); /* * Create a new AST @@ -94,27 +94,30 @@ final class TokenTransformer implements Consumer { private final Predicate operatorPredicate; /* The predicate for detecting special operators. */ - private final Predicate isSpecialOperator; + private final Predicate isSpecialOperator; /* The function for handling special operators. */ - private final Function> handleSpecialOperator; + private final Function> handleSpecialOperator; /** * Create a new transformer * * @param initialState - * The initial state of the transformer. + * The initial state of the transformer. * * @param operatorPredicate - * The predicate to use to identify operators. + * The predicate to use to identify operators. * * @param isSpecialOperator - * The predicate used to identify special operators. + * The predicate used to identify special + * operators. * * @param handleSpecialOperator - * The function used for handling special operators. + * The function used for handling special + * operators. */ public TokenTransformer(final IHolder> initialState, - final Predicate operatorPredicate, final Predicate isSpecialOperator, + final Predicate operatorPredicate, + final Predicate isSpecialOperator, final Function> handleSpecialOperator) { this.initialState = initialState; this.operatorPredicate = operatorPredicate; @@ -127,7 +130,7 @@ final class TokenTransformer implements Consumer { /* * Handle operators */ - if(operatorPredicate.test(element)) { + if (operatorPredicate.test(element)) { initialState.transform(new OperatorHandler(element)); } else { final ITree newAST = new Tree<>(element); @@ -135,18 +138,11 @@ final class TokenTransformer implements Consumer { /* * Insert the new tree into the AST */ - initialState.transform(pair -> { - /* - * Transform the pair, ignoring the current AST - * in favor of the one consisting of the current - * element - */ - return new ConstructorState<>(pair.bindLeft(queue -> { - queue.push(newAST); + initialState.transform(pair -> new ConstructorState<>(pair.bindLeft(queue -> { + queue.push(newAST); - return new Pair<>(queue, newAST); - })); - }); + return new Pair<>(queue, newAST); + }))); } } } -- cgit v1.2.3