/// <summary> /// Исправление VariableDefinitionNode для переменной Result функций. /// В семантике эта переменная называется $rv_{FuncName}, а нам нужно имя result /// Создается новый фиктивный экземпляр local_variable с тем же типом и именем result и возвращается вместо старого. /// </summary> private void FixResultVar() { for (int i=0; i<Variables.Count; ++i) if (Variables[i].name.StartsWith("$rv_")) { TreeRealization.local_variable OldResult = Variables[i] as TreeRealization.local_variable; TreeRealization.local_variable NewResult = new PascalABCCompiler.TreeRealization.local_variable("result", OldResult.type, OldResult.function, OldResult.loc); Variables[i] = NewResult; } }
/// <summary> /// Исправление VariableDefinitionNode для переменной Result функций. /// В семантике эта переменная называется $rv_{FuncName}, а нам нужно имя result /// Создается новый фиктивный экземпляр local_variable с тем же типом и именем result и возвращается вместо старого. /// </summary> private void FixResultVar() { for (int i = 0; i < Variables.Count; ++i) { if (Variables[i].name.StartsWith("$rv_")) { TreeRealization.local_variable OldResult = Variables[i] as TreeRealization.local_variable; TreeRealization.local_variable NewResult = new PascalABCCompiler.TreeRealization.local_variable("result", OldResult.type, OldResult.function, OldResult.loc); Variables[i] = NewResult; } } }