首页 > 其他分享 >按照 ExpressionVisitor 抽象类 思路 重新实现表达式 从左到右 递归解析 解决参数编号无法正序递增问题

按照 ExpressionVisitor 抽象类 思路 重新实现表达式 从左到右 递归解析 解决参数编号无法正序递增问题

时间:2022-11-04 17:36:04浏览次数:80  
标签:node ExpressionVisitor 正序 递归 Visit case return 抽象类 表达式

 

核心递归方法 根据表达式类型 跳转到 具体的处理方法 处理完后 返回 null 跳出循环

        /// <summary>
        /// 访问
        /// </summary>
        /// <param name="node">节点</param>
        /// <returns></returns>
        public Expression Visit(Expression node)
        {
            //Console.WriteLine($"当前访问 {node.NodeType} 类型表达式");
            switch (node)
            {
                case LambdaExpression:
                    {
                        return Visit(VisitLambda(node as LambdaExpression));
                    };
                case UnaryExpression:
                    {
                        return Visit(VisitUnary(node as UnaryExpression));
                    }
                case BinaryExpression:
                    {
                        return Visit(VisitBinary(node as BinaryExpression));
                    }
                case MethodCallExpression:
                    {
                        return Visit(VisitMethodCall(node as MethodCallExpression));
                    }
                case ConditionalExpression:
                    {
                        return Visit(VisitConditional(node as ConditionalExpression));
                    }
                case NewExpression:
                    {
                        return Visit(VisitNew(node as NewExpression));
                    }
                case MemberInitExpression:
                    {
                        return Visit(VisitMemberInit(node as MemberInitExpression));
                    }
                case NewArrayExpression:
                    {
                        return Visit(VisitNewArray(node as NewArrayExpression));
                    }
                case ListInitExpression:
                    {
                        return Visit(VisitListInit(node as ListInitExpression));
                    }
                case MemberExpression:
                    {
                        return Visit(VisitMember(node as MemberExpression));
                    }
                case ConstantExpression:
                    {
                        return Visit(VisitConstant(node as ConstantExpression));
                    }
                default:
                    return null;
            }
        }

  

 

 

 

 

 

 

搜索

复制

标签:node,ExpressionVisitor,正序,递归,Visit,case,return,抽象类,表达式
From: https://www.cnblogs.com/China-Mr-zhong/p/16858535.html

相关文章

  • [Java基础]-- 接口、抽象类
    一直都在使用接口,没怎么用过抽象类,今天面试遇到了面试官提问:抽象类和接口有什么区别啊?下面就关于这个问题好好研究一下,希望在以后的工作中能牢记。。以下是《疯狂java讲义》......
  • java抽象类的特点
    /***抽象类的成员的特点*抽象类中可以有成员变量、构造方法、成员方法(抽象的和具体的),其特点如下:*1.成员变量:既可以是变量。也可以是常量*/publicclassSt......
  • java中的抽象类abstract
    /***学习抽象类和抽象方法*抽象方法:只进行方法的声明,而不提供具体的实现(没有方法体)*抽象类:只要在一个类中有一个抽象方法,那么这个就得声明一个抽象类*抽象类和......
  • 【Java】抽象类详解、抽象类与接口的区别
    文章目录​​什么是抽象类​​​​抽象方法的优点​​​​抽象类和接口的主要区别​​什么是抽象类例如:publicabstractclassA{abstractintadd(intx,inty);in......
  • 5 访问修饰符 抽象类 抽象成员 密封类 静态类 扩展方法 命名约定
    目录访问修饰符抽象成员抽象类密封类静态类扩展方法命名约定访问修饰符所有声明在类中的成员都是可见的,无论他们的访问性如何。继承的成员对派生的成员可以是可见的,也......
  • javaSE10--final关键字-抽象类-接口-抽象类接口区别
    final关键字final用于声明属性,方法和类,可以修饰类,修饰字段,修饰方法,修饰局部变量,修饰形参属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期不能修改,修饰修......
  • Java继承、抽象类、接口
    ......
  • 力扣-4-寻找两个正序数组的中位数
    中位数的定义是什么?有序数列中位置中间的数字如果中间位置有两个返回则他们的平均值,所以这里的返回值是个double要求时间复杂度为log(m+n),也就是说只对两个数组做一次遍......
  • 寻找两个正序数组的中位数
    给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log(m+n)) 。 示例......
  • Java知识27 抽象类【多测师】
    一、在Java中一起都是对象,所有的对象都是通过类来描绘的,但不是所有的类都是用来描绘对象的,一个类中没有足够的信息描绘一个具体的对象就是抽象类特点:1.抽象类不能实例化对象......