public override void VisitAfter(SubstringFunc expr) { Expr arg3 = null; if (expr.Argument3 != null) { arg3 = (Expr)_stack.Pop(); } Expr arg2 = (Expr)_stack.Pop(); Expr arg1 = (Expr)_stack.Pop(); if (object.ReferenceEquals(expr.Argument1, arg1) && object.ReferenceEquals(expr.Argument2, arg2) && object.ReferenceEquals(expr.Argument3, arg3)) { _stack.Push(expr); return; } var node = new SubstringFunc(expr.Name , arg1, arg2, arg3 , expr.Separator1IsComma , expr.Separator2IsComma , expr.Comments.Clone()); _stack.Push(node); }
public override void VisitAfter(SubstringFunc expr) { if (IsPlaceHolderExpr(expr.Argument1)) { expr.Argument1 = Place((PlaceHolderExpr)expr.Argument1); } if (IsPlaceHolderExpr(expr.Argument2)) { expr.Argument2 = Place((PlaceHolderExpr)expr.Argument2); } if (IsPlaceHolderExpr(expr.Argument3)) { expr.Argument3 = Place((PlaceHolderExpr)expr.Argument3); } }
public override void ExitSubstring_function(MiniSqlParserParser.Substring_functionContext context) { var comments = this.GetComments(context); Expr arg3 = null; bool isComma2 = false; if (context.expr().Length == 3) { arg3 = (Expr)_stack.Pop(); isComma2 = context.K_FOR() == null; } Expr arg2 = (Expr)_stack.Pop(); bool isComma1 = context.K_FROM() == null; Expr arg1 = (Expr)_stack.Pop(); var name = this.Coalesce(context.K_SUBSTRING(), context.K_SUBSTR()); var node = new SubstringFunc(name, arg1, arg2, arg3, isComma1, isComma2, comments); _stack.Push(node); }
virtual public void VisitOnSeparator(SubstringFunc expr, int offset, int i) { }
virtual public void VisitAfter(SubstringFunc expr) { }
virtual public void VisitBefore(SubstringFunc expr) { }
public void VisitOnSeparator(SubstringFunc expr, int offset, int i) { _visitor.VisitOnSeparator(expr, offset, i); }
public void VisitAfter(SubstringFunc expr) { _visitor.VisitAfter(expr); }
public void VisitBefore(SubstringFunc expr) { _visitor.VisitBefore(expr); }