public LambdaResultTypeInferrer(function_header lambdaHeader, proc_block lambdaBody, syntax_tree_visitor syntaxTreeVisitor)
 {
     this.lambdaBody        = lambdaBody;
     this.lambdaHeader      = lambdaHeader;
     this.syntaxTreeVisitor = syntaxTreeVisitor;
     resultExpressionsTypes = new List <Tuple <type_node, expression, expression_node> >();
 }
        /// <summary>
        /// Вывод типа возвращаемого значения лямбды
        /// </summary>
        public static void InferResultType(function_header funcHeader, proc_block procBody, syntax_tree_visitor visitor)
        {
            var retType = funcHeader.return_type as lambda_inferred_type;

            if (retType != null && retType.real_type is lambda_any_type_node)
            {
                retType.real_type = new LambdaResultTypeInferrer(funcHeader, procBody, visitor).InferResultType();
            }
        }
 public override void visit(proc_block _proc_block)
 {
 }
 public virtual void visit(proc_block _proc_block)
 {
     DefaultVisit(_proc_block);
 }
		public virtual void post_do_visit(proc_block _proc_block)
		{
		}
		public override void visit(proc_block _proc_block)
		{
			DefaultVisit(_proc_block);
			pre_do_visit(_proc_block);
			post_do_visit(_proc_block);
		}
Exemple #7
0
 public virtual void visit(proc_block _proc_block)
 {
 }
Exemple #8
0
 public override void visit(proc_block _proc_block)
 {
     throw new NotImplementedException();
 }
		public virtual void visit(proc_block _proc_block)
		{
		}
		public virtual void visit(proc_block _proc_block)
		{
			DefaultVisit(_proc_block);
		}
		public override void visit(proc_block _proc_block)
		{
			executer.visit(_proc_block);
		}