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>>(); }
public void write_proc_block(proc_block _proc_block) { write_syntax_tree_node(_proc_block); }
public void visit(proc_block _proc_block) { bw.Write((Int16)109); write_proc_block(_proc_block); }
///<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; }
///<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; }
///<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; }
public override void visit(proc_block _proc_block) { throw new NotImplementedException(); }
/// <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); }
public override void visit(proc_block _proc_block) { //throw new Exception("The method or operation is not implemented."); }
public void visit(proc_block _proc_block) { read_proc_block(_proc_block); }
public override void visit(proc_block _proc_block) { }
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()); } }
///<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; }
///<summary> ///Конструктор с параметрами. ///</summary> public procedure_definition(procedure_header _proc_header,proc_block _proc_body) { this._proc_header=_proc_header; this._proc_body=_proc_body; }