Example #1
0
 /** Evaluate an expression */
 public void exec(HplsqlParser.ExprContext ctx) {
   try {
     if (ctx.T_ADD() != null) {
       operatorAdd(ctx);
     } else if (ctx.T_SUB() != null) {
       operatorSub(ctx);
     } else if (ctx.T_MUL() != null) {
       operatorMultiply(ctx);
     } else if (ctx.T_DIV() != null) {
       operatorDiv(ctx);
     } else if (ctx.interval_item() != null) {
       createInterval(ctx);
     } else {
       visitChildren(ctx);
     }
   } catch (Exception e) {
     exec.signal(e);
   }
 }
Example #2
0
 /** Evaluate an expression in executable SQL statement */
 public void execSql(HplsqlParser.ExprContext ctx) {
   StringBuilder sql = new StringBuilder();
   if (ctx.T_OPEN_P() != null) {
     sql.append("(");
     if (ctx.select_stmt() != null) {
       exec.append(
           sql,
           evalPop(ctx.select_stmt()).toString(),
           ctx.T_OPEN_P().getSymbol(),
           ctx.select_stmt().getStart());
       exec.append(
           sql, ctx.T_CLOSE_P().getText(), ctx.select_stmt().stop, ctx.T_CLOSE_P().getSymbol());
     } else {
       sql.append(evalPop(ctx.expr(0)).toString());
       sql.append(")");
     }
   } else if (ctx.T_MUL() != null) {
     sql.append(evalPop(ctx.expr(0)).toString());
     sql.append(" * ");
     sql.append(evalPop(ctx.expr(1)).toString());
   } else if (ctx.T_DIV() != null) {
     sql.append(evalPop(ctx.expr(0)).toString());
     sql.append(" / ");
     sql.append(evalPop(ctx.expr(1)).toString());
   } else if (ctx.T_ADD() != null) {
     sql.append(evalPop(ctx.expr(0)).toString());
     sql.append(" + ");
     sql.append(evalPop(ctx.expr(1)).toString());
   } else if (ctx.T_SUB() != null) {
     sql.append(evalPop(ctx.expr(0)).toString());
     sql.append(" - ");
     sql.append(evalPop(ctx.expr(1)).toString());
   } else if (ctx.interval_item() != null) {
     sql.append(exec.getFormattedText(ctx));
   } else {
     visitChildren(ctx);
     sql.append(exec.stackPop().toString());
   }
   exec.stackPush(sql);
 }