private void buildCondition(Tree syntaxNode, Block trueBlock, Block falseBlock) { switch (syntaxNode.kind()) { case CONDITIONAL_OR: buildConditionalOr((BinaryExpressionTree) syntaxNode, trueBlock, falseBlock); break; case CONDITIONAL_AND: // process RHS buildConditionalAnd((BinaryExpressionTree) syntaxNode, trueBlock, falseBlock); break; // Skip syntactic sugar: case PARENTHESIZED_EXPRESSION: buildCondition(((ParenthesizedTree) syntaxNode).expression(), trueBlock, falseBlock); break; default: build(syntaxNode); break; } }
private void buildConditionalAnd(BinaryExpressionTree conditionalAnd, Block trueBlock, Block falseBlock) { buildCondition(conditionalAnd.rightOperand(), trueBlock, falseBlock); Block newTrueBlock = currentBlock; // process LHS currentBlock = createBranch(conditionalAnd, newTrueBlock, falseBlock); buildCondition(conditionalAnd.leftOperand(), newTrueBlock, falseBlock); }
private void buildCondition(Tree syntaxNode, Block trueBlock, Block falseBlock) { switch (syntaxNode.kind()) { case CONDITIONAL_OR: buildConditionalOr((BinaryExpressionTree) syntaxNode, trueBlock, falseBlock); break; case CONDITIONAL_AND: // process RHS buildConditionalAnd((BinaryExpressionTree) syntaxNode, trueBlock, falseBlock); break; // Skip syntactic sugar: case PARENTHESIZED_EXPRESSION: buildCondition(((ParenthesizedTree) syntaxNode).expression(), trueBlock, falseBlock); break; default: build(syntaxNode); break; } }
private void buildConditionalAnd(BinaryExpressionTree conditionalAnd, Block trueBlock, Block falseBlock) { buildCondition(conditionalAnd.rightOperand(), trueBlock, falseBlock); Block newTrueBlock = currentBlock; // process LHS currentBlock = createBranch(conditionalAnd, newTrueBlock, falseBlock); buildCondition(conditionalAnd.leftOperand(), newTrueBlock, falseBlock); }
private void buildCondition(Tree syntaxNode, Block trueBlock, Block falseBlock) { switch (syntaxNode.kind()) { case CONDITIONAL_OR: buildConditionalOr((BinaryExpressionTree) syntaxNode, trueBlock, falseBlock); break; case CONDITIONAL_AND: // process RHS buildConditionalAnd((BinaryExpressionTree) syntaxNode, trueBlock, falseBlock); break; // Skip syntactic sugar: case PARENTHESIZED_EXPRESSION: buildCondition(((ParenthesizedTree) syntaxNode).expression(), trueBlock, falseBlock); break; default: build(syntaxNode); break; } }
private void buildConditionalOr(BinaryExpressionTree conditionalOr, Block trueBlock, Block falseBlock) { // process RHS buildCondition(conditionalOr.rightOperand(), trueBlock, falseBlock); Block newFalseBlock = currentBlock; // process LHS currentBlock = createBranch(conditionalOr, trueBlock, newFalseBlock); buildCondition(conditionalOr.leftOperand(), trueBlock, newFalseBlock); }
private void buildConditionalOr(BinaryExpressionTree conditionalOr, Block trueBlock, Block falseBlock) { // process RHS buildCondition(conditionalOr.rightOperand(), trueBlock, falseBlock); Block newFalseBlock = currentBlock; // process LHS currentBlock = createBranch(conditionalOr, trueBlock, newFalseBlock); buildCondition(conditionalOr.leftOperand(), trueBlock, newFalseBlock); }
private void buildConditionalAnd(BinaryExpressionTree conditionalAnd, Block trueBlock, Block falseBlock) { buildCondition(conditionalAnd.rightOperand(), trueBlock, falseBlock); Block newTrueBlock = currentBlock; // process LHS currentBlock = createBranch(conditionalAnd, newTrueBlock, falseBlock); buildCondition(conditionalAnd.leftOperand(), newTrueBlock, falseBlock); }
private void buildConditionalOr(BinaryExpressionTree conditionalOr, Block trueBlock, Block falseBlock) { // process RHS buildCondition(conditionalOr.rightOperand(), trueBlock, falseBlock); Block newFalseBlock = currentBlock; // process LHS currentBlock = createBranch(conditionalOr, trueBlock, newFalseBlock); buildCondition(conditionalOr.leftOperand(), trueBlock, newFalseBlock); }
private void buildDoWhileStatement(DoWhileStatementTree doWhileStatementTree) { Block falseBranch = currentBlock; Block loopback = createBlock(); // process condition currentBlock = createBranch(doWhileStatementTree, loopback, falseBranch); buildCondition(doWhileStatementTree.condition(), loopback, falseBranch); // process body addContinueTarget(currentBlock); currentBlock = createBlock(currentBlock); breakTargets.addLast(falseBranch); build(doWhileStatementTree.statement()); breakTargets.removeLast(); continueTargets.removeLast(); loopback.addSuccessor(currentBlock); currentBlock = createBlock(currentBlock); }
private void buildWhileStatement(WhileStatementTree whileStatement) { Block falseBranch = currentBlock; Block loopback = createBlock(); // process body currentBlock = createBlock(loopback); addContinueTarget(loopback); breakTargets.addLast(falseBranch); build(whileStatement.statement()); breakTargets.removeLast(); continueTargets.removeLast(); Block bodyBlock = currentBlock; // process condition currentBlock = createBranch(whileStatement, bodyBlock, falseBranch); buildCondition(whileStatement.condition(), bodyBlock, falseBranch); loopback.addSuccessor(currentBlock); currentBlock = createBlock(currentBlock); }
private void buildDoWhileStatement(DoWhileStatementTree doWhileStatementTree) { Block falseBranch = currentBlock; Block loopback = createBlock(); // process condition currentBlock = createBranch(doWhileStatementTree, loopback, falseBranch); buildCondition(doWhileStatementTree.condition(), loopback, falseBranch); // process body currentBlock = createBlock(currentBlock); addContinueTarget(loopback); breakTargets.addLast(falseBranch); build(doWhileStatementTree.statement()); breakTargets.removeLast(); continueTargets.removeLast(); loopback.addSuccessor(currentBlock); currentBlock = createBlock(currentBlock); }
private void buildWhileStatement(WhileStatementTree whileStatement) { Block falseBranch = currentBlock; Block loopback = createBlock(); // process body currentBlock = createBlock(loopback); addContinueTarget(loopback); breakTargets.addLast(falseBranch); build(whileStatement.statement()); breakTargets.removeLast(); continueTargets.removeLast(); Block bodyBlock = currentBlock; // process condition currentBlock = createBranch(whileStatement, bodyBlock, falseBranch); buildCondition(whileStatement.condition(), bodyBlock, falseBranch); loopback.addSuccessor(currentBlock); currentBlock = createBlock(currentBlock); }
private void buildWhileStatement(WhileStatementTree whileStatement) { Block falseBranch = currentBlock; Block loopback = createBlock(); // process body currentBlock = createBlock(loopback); addContinueTarget(loopback); breakTargets.addLast(falseBranch); build(whileStatement.statement()); breakTargets.removeLast(); continueTargets.removeLast(); Block bodyBlock = currentBlock; // process condition currentBlock = createBranch(whileStatement, bodyBlock, falseBranch); buildCondition(whileStatement.condition(), bodyBlock, falseBranch); loopback.addSuccessor(currentBlock); currentBlock = createBlock(currentBlock); }
private void buildDoWhileStatement(DoWhileStatementTree doWhileStatementTree) { Block falseBranch = currentBlock; Block loopback = createBlock(); // process condition currentBlock = createBranch(doWhileStatementTree, loopback, falseBranch); buildCondition(doWhileStatementTree.condition(), loopback, falseBranch); // process body addContinueTarget(currentBlock); currentBlock = createBlock(currentBlock); breakTargets.addLast(falseBranch); build(doWhileStatementTree.statement()); breakTargets.removeLast(); continueTargets.removeLast(); loopback.addSuccessor(currentBlock); currentBlock = createBlock(currentBlock); }
private void buildConditionalExpression(ConditionalExpressionTree cond) { Block next = currentBlock; // process else-branch ExpressionTree elseStatement = cond.falseExpression(); currentBlock = createBlock(next); build(elseStatement); Block elseBlock = currentBlock; // process then-branch currentBlock = createBlock(next); build(cond.trueExpression()); Block thenBlock = currentBlock; // process condition currentBlock = createBranch(cond, thenBlock, elseBlock); buildCondition(cond.condition(), thenBlock, elseBlock); }
private void buildConditionalExpression(ConditionalExpressionTree cond) { Block next = currentBlock; // process else-branch ExpressionTree elseStatement = cond.falseExpression(); currentBlock = createBlock(next); build(elseStatement); Block elseBlock = currentBlock; // process then-branch currentBlock = createBlock(next); build(cond.trueExpression()); Block thenBlock = currentBlock; // process condition currentBlock = createBranch(cond, thenBlock, elseBlock); buildCondition(cond.condition(), thenBlock, elseBlock); }
private void buildConditionalExpression(ConditionalExpressionTree cond) { Block next = currentBlock; // process else-branch ExpressionTree elseStatement = cond.falseExpression(); currentBlock = createBlock(next); build(elseStatement); Block elseBlock = currentBlock; // process then-branch currentBlock = createBlock(next); build(cond.trueExpression()); Block thenBlock = currentBlock; // process condition currentBlock = createBranch(cond, thenBlock, elseBlock); buildCondition(cond.condition(), thenBlock, elseBlock); }
private void buildIfStatement(IfStatementTree ifStatementTree) { Block next = currentBlock; // process else-branch Block elseBlock = next; StatementTree elseStatement = ifStatementTree.elseStatement(); if (elseStatement != null) { // if statement will create the required block. if (!elseStatement.is(Tree.Kind.IF_STATEMENT)) { currentBlock = createBlock(next); } build(elseStatement); elseBlock = currentBlock; } // process then-branch currentBlock = createBlock(next); build(ifStatementTree.thenStatement()); Block thenBlock = currentBlock; // process condition currentBlock = createBranch(ifStatementTree, thenBlock, elseBlock); buildCondition(ifStatementTree.condition(), thenBlock, elseBlock); }
private void buildIfStatement(IfStatementTree ifStatementTree) { Block next = currentBlock; // process else-branch Block elseBlock = next; StatementTree elseStatement = ifStatementTree.elseStatement(); if (elseStatement != null) { // if statement will create the required block. if (!elseStatement.is(Tree.Kind.IF_STATEMENT)) { currentBlock = createBlock(next); } build(elseStatement); elseBlock = currentBlock; } // process then-branch currentBlock = createBlock(next); build(ifStatementTree.thenStatement()); Block thenBlock = currentBlock; // process condition currentBlock = createBranch(ifStatementTree, thenBlock, elseBlock); buildCondition(ifStatementTree.condition(), thenBlock, elseBlock); }