/// <summary> /// Добавляет Use переменную в DList /// </summary> /// <param name="expr">Выражение</param> /// <param name="strId">Идентификатор строки в блоке</param> private void AddUseVariable(Expr expr, Guid strId) { if (expr is Var) { var variable = expr as Var; // Поиск последнего переопределения переменной var index = DList.FindLastIndex(v => { return(v.DefVariable.Name.Id == variable.Id); }); var UVar = new DUVar(variable, strId); // Добавление Use переменной if (index != -1) { DList[index].AddUseVariables(UVar); } else { UListNotValid.Add(UVar); } } }
/// <summary> /// Конструктор Use узла /// </summary> /// <param name="UseVariable">Use переменная</param> /// <param name="DefVariable">Def переменная</param> public UNode(DUVar UseVariable, DUVar DefVariable) { this.UseVariable = UseVariable; this.DefVariable = DefVariable; }
/// <summary> /// Конструктор Def узла /// </summary> /// <param name="DefVariable">Def переменная</param> /// <param name="UseVariables">Список Use переменных</param> public DNode(DUVar DefVariable, List <DUVar> UseVariables) { this.DefVariable = DefVariable; this.UseVariables = UseVariables.ToList(); }