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>>();
 }
Ejemplo n.º 2
0
		public void write_proc_block(proc_block _proc_block)
		{
			write_syntax_tree_node(_proc_block);
		}
Ejemplo n.º 3
0
		public void visit(proc_block _proc_block)
		{
			bw.Write((Int16)109);
			write_proc_block(_proc_block);
		}
Ejemplo n.º 4
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public procedure_definition(procedure_header _proc_header,proc_block _proc_body,bool _is_short_definition,SourceContext sc)
		{
			this._proc_header=_proc_header;
			this._proc_body=_proc_body;
			this._is_short_definition=_is_short_definition;
			source_context = sc;
		}
Ejemplo n.º 5
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public procedure_definition(procedure_header _proc_header,proc_block _proc_body,bool _is_short_definition)
		{
			this._proc_header=_proc_header;
			this._proc_body=_proc_body;
			this._is_short_definition=_is_short_definition;
		}
Ejemplo n.º 6
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public short_func_definition(procedure_header _proc_header,proc_block _proc_body,bool _is_short_definition,procedure_definition _procdef)
		{
			this._proc_header=_proc_header;
			this._proc_body=_proc_body;
			this._is_short_definition=_is_short_definition;
			this._procdef=_procdef;
		}
Ejemplo n.º 7
0
 public override void visit(proc_block _proc_block)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 8
0
 /// <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 void read_proc_block(proc_block _proc_block)
		{
			read_syntax_tree_node(_proc_block);
		}
Ejemplo n.º 10
0
 public override void visit(proc_block _proc_block)
 {
     //throw new Exception("The method or operation is not implemented.");
 }
Ejemplo n.º 11
0
		public void visit(proc_block _proc_block)
		{
			read_proc_block(_proc_block);
		}
Ejemplo n.º 12
0
		public override void visit(proc_block _proc_block)
		{
			
		}
Ejemplo n.º 13
0
 public void CompareInternal(proc_block left, proc_block right)
 {
     if (left == null && right != null || left != null && right == null)
         throw_not_equal(left, right);
     if (left != null && right != null)
     {
         if (left.GetType() != right.GetType())
             throw_not_equal(left, right);
         /*Type t = left.GetType();
         MethodInfo mi = typeof(SyntaxTreeComparer).GetMethod("CompareInternal", new Type[] { t, t });
         mi.Invoke(this, new object[] { left, right });*/
         if (left is block)
             CompareInternal(left as block, right as block);
         else if (left is external_directive)
             CompareInternal(left as external_directive, right as external_directive);
         else
             throw new NotImplementedException(left.GetType().ToString());
     }
 }
Ejemplo n.º 14
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public procedure_definition(procedure_header _proc_header,proc_block _proc_body,SourceContext sc)
		{
			this._proc_header=_proc_header;
			this._proc_body=_proc_body;
			source_context = sc;
		}
Ejemplo n.º 15
0
		///<summary>
		///Конструктор с параметрами.
		///</summary>
		public procedure_definition(procedure_header _proc_header,proc_block _proc_body)
		{
			this._proc_header=_proc_header;
			this._proc_body=_proc_body;
		}