@Override public Expression visit(LetClause letClause, ILangExpression arg) throws CompilationException { letClause.setBindingExpr(visit(letClause.getBindingExpr(), letClause)); return null; }
@Override public Boolean visit(LetClause lc, List<FunctionDecl> arg) throws CompilationException { Pair<Boolean, Expression> p = inlineUdfsInExpr(lc.getBindingExpr(), arg); lc.setBindingExpr(p.second); return p.first; }
@Override public Expression visit(LetClause letClause, ILangExpression arg) throws CompilationException { letClause.setBindingExpr(visit(letClause.getBindingExpr(), letClause)); return null; }
private Map<VariableExpr, Expression> extractLetBindingVariables(List<Clause> clauses, GroupbyClause cuttingGbyClause) throws CompilationException { Map<VariableExpr, Expression> varExprMap = new HashMap<VariableExpr, Expression>(); int gbyIndex = clauses.indexOf(cuttingGbyClause); for (int i = gbyIndex + 1; i < clauses.size(); i++) { Clause cl = clauses.get(i); if (cl.getClauseType() == ClauseType.LET_CLAUSE) { LetClause letClause = (LetClause) cl; // inline let variables one by one iteratively. letClause.setBindingExpr((Expression) AQLVariableSubstitutionUtil .substituteVariable(letClause.getBindingExpr(), varExprMap)); varExprMap.put(letClause.getVarExpr(), letClause.getBindingExpr()); } } return varExprMap; }
private Map<Expression, Expression> extractLetBindingVariableExpressionMappings(List<LetClause> letClauses) throws CompilationException { Map<Expression, Expression> varExprMap = new HashMap<>(); for (LetClause lc : letClauses) { // inline let variables one by one iteratively. lc.setBindingExpr(SqlppRewriteUtil.substituteExpression(lc.getBindingExpr(), varExprMap, context)); varExprMap.put(lc.getVarExpr(), lc.getBindingExpr()); } return varExprMap; } }
letClause.setBindingExpr(newBindingExpr);
@Override public Expression visit(LetClause letClause, ILangExpression arg) throws CompilationException { scopeChecker.extendCurrentScope(); letClause.setBindingExpr(visit(letClause.getBindingExpr(), letClause)); VariableExpr varExpr = letClause.getVarExpr(); addNewVarSymbolToScope(scopeChecker.getCurrentScope(), varExpr.getVar(), varExpr.getSourceLocation()); return null; }
final public Clause LetClause() throws ParseException, ParseException { LetClause lc = new LetClause(); VariableExpr varExp; Expression beExp; extendCurrentScope(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LET: jj_consume_token(LET); break; case WITH: jj_consume_token(WITH); break; default: jj_la1[103] = jj_gen; jj_consume_token(-1); throw new ParseException(); } varExp = Variable(); jj_consume_token(ASSIGN); beExp = Expression(); getCurrentScope().addNewVarSymbolToScope(varExp.getVar()); lc.setVarExpr(varExp); lc.setBindingExpr(beExp); {if (true) return lc;} throw new Error("Missing return statement in function"); }
final public Clause LetClause() throws ParseException, ParseException { LetClause lc = new LetClause(); VariableExpr varExp; Expression beExp; extendCurrentScope(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LET: jj_consume_token(LET); break; case WITH: jj_consume_token(WITH); break; default: jj_la1[33] = jj_gen; jj_consume_token(-1); throw new ParseException(); } varExp = Variable(); jj_consume_token(ASSIGN); beExp = Expression(); getCurrentScope().addNewVarSymbolToScope(varExp.getVar()); lc.setVarExpr(varExp); lc.setBindingExpr(beExp); {if (true) return lc;} throw new Error("Missing return statement in function"); }