s.setIfCondition(((CaseStatementContext)_localctx).caseWhenStat.e);
s.setIfCondition(((IfStatementContext)_localctx).i1.i); s.setPosition(pos((((IfStatementContext)_localctx).i1!=null?(((IfStatementContext)_localctx).i1.start):null))); setState(241); _errHandler.sync(this); s.setIfCondition(((IfStatementContext)_localctx).elseIfStat.i);
/** * Wraps the comparison function in an If-statement which compares the types first, evaluating the comaprison function only * if the types are equivialent * * @param comparisonFunction * @param args * @return */ private static LogicalExpression getTypeComparisonFunction(LogicalExpression comparisonFunction, HoldingContainer... args) { List<LogicalExpression> argExpressions = Lists.newArrayList(); List<MajorType> argTypes = Lists.newArrayList(); for(HoldingContainer c : args) { argTypes.add(c.getMajorType()); argExpressions.add(new HoldingContainerExpression(c)); } FunctionCall call = new FunctionCall("compareType", argExpressions, ExpressionPosition.UNKNOWN); List<LogicalExpression> newArgs = Lists.newArrayList(); newArgs.add(call); newArgs.add(new IntExpression(0, ExpressionPosition.UNKNOWN)); FunctionCall notEqual = new FunctionCall("not_equal", newArgs, ExpressionPosition.UNKNOWN); IfExpression.IfCondition ifCondition = new IfCondition(notEqual, call); IfExpression ifExpression = IfExpression.newBuilder().setIfCondition(ifCondition).setElse(comparisonFunction).build(); return ifExpression; }
if (IfExpression.newBuilder().setElse(newElseExpr).setIfCondition(conditions).build().getMajorType().getMode() == DataMode.OPTIONAL) { IfExpression.IfCondition condition = conditions; IfExpression.newBuilder() .setElse(newElseExpr) .setIfCondition(conditions) .setOutputType(outputType) .build());
elseExpression = IfExpression.newBuilder() .setElse(elseExpression) .setIfCondition(new IfCondition(caseArgs.get(i + 1), caseArgs.get(i))).build();
ifExpression = IfExpression.newBuilder().setIfCondition(ifConditions.poll()).setElse(ifExpression).build();
s.setIfCondition(((CaseStatementContext)_localctx).caseWhenStat.e);
s.setIfCondition(((IfStatementContext)_localctx).i1.i); s.setPosition(pos((((IfStatementContext)_localctx).i1!=null?(((IfStatementContext)_localctx).i1.start):null))); setState(241); _errHandler.sync(this); s.setIfCondition(((IfStatementContext)_localctx).elseIfStat.i);
@Override public LogicalExpression visitIfExpression(IfExpression ifExpr, Void value) throws RuntimeException{ LogicalExpression newElseExpr = ifExpr.elseExpression.accept(this, value); IfCondition conditions = ifExpr.ifCondition; LogicalExpression newCondition = conditions.condition.accept(this, value); LogicalExpression newExpr = conditions.expression.accept(this, value); conditions = new IfExpression.IfCondition(newCondition, newExpr); return IfExpression.newBuilder().setElse(newElseExpr).setIfCondition(conditions).build(); }
@Override public LogicalExpression visitIfExpression(IfExpression ifExpr, Void value) throws RuntimeException { LogicalExpression ifCondition = ifExpr.ifCondition.condition.accept(this, null); LogicalExpression ifExpression = ifExpr.ifCondition.expression.accept(this, null); LogicalExpression elseExpression = ifExpr.elseExpression.accept(this, null); IfExpression.IfCondition condition = new IfCondition(ifCondition, ifExpression); return IfExpression.newBuilder().setIfCondition(condition).setElse(elseExpression).build(); }
@Override public LogicalExpression visitIfExpression(IfExpression ifExpr, Void value) throws RuntimeException{ LogicalExpression newElseExpr = ifExpr.elseExpression.accept(this, value); IfCondition conditions = ifExpr.ifCondition; LogicalExpression newCondition = conditions.condition.accept(this, value); LogicalExpression newExpr = conditions.expression.accept(this, value); conditions = new IfExpression.IfCondition(newCondition, newExpr); return IfExpression.newBuilder().setElse(newElseExpr).setIfCondition(conditions).build(); }