예제 #1
0
        public override string VisitIfExpr(AstIfExpr ifs, int indentLevel = 0)
        {
            var sb = new StringBuilder();

            sb.Append("if ");

            sb.Append(ifs.Condition.Accept(this));
            sb.Append(" ");
            sb.Append(ifs.IfCase.Accept(this));
            if (ifs.ElseCase != null)
            {
                sb.Append(" else ");
                sb.Append(ifs.ElseCase.Accept(this));
            }
            return(sb.ToString().Indent(indentLevel));
        }
예제 #2
0
        public override NodeFinderResult VisitIfExpr(AstIfExpr ifs, int i = 0)
        {
            if (GetRelativeLocation(ifs.Condition.Location, i) == RelativeLocation.Same)
            {
                return(ifs.Condition.Accept(this, i));
            }

            if (GetRelativeLocation(ifs.IfCase.Location, i) == RelativeLocation.Same)
            {
                return(ifs.IfCase.Accept(this, i));
            }
            if (ifs.ElseCase != null && GetRelativeLocation(ifs.ElseCase.Location, i) == RelativeLocation.Same)
            {
                return(ifs.ElseCase.Accept(this, i));
            }

            return(new NodeFinderResult(ifs.Scope, expr: ifs));
        }
예제 #3
0
 public virtual ReturnType VisitIfExpr(AstIfExpr expr, DataType data                   = default) => default;