Поделиться через


SyntaxEditor Класс

Определение

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
public ref class SyntaxEditor
public class SyntaxEditor
type SyntaxEditor = class
Public Class SyntaxEditor
Наследование
SyntaxEditor
Производный

Комментарии

Приведенная выше стратегия редактирования делает это ошибкой для клиента редактора, чтобы добавить изменение, которое обновляет родительский узел, а затем добавляет изменение, которое обновляет дочерний узел (если родительское изменение не обязательно содержит дочерний элемент), и попытка этого будет вызываться во время выполнения. Если клиент когда-либо должен обновить дочерний и родительский, он должен сначала добавить дочернее изменение, а затем родительское изменение. И родительское изменение должно передавать соответствующий обратный вызов compute, чтобы увидеть результаты дочернего изменения.

Если клиент хочет выполнить замену, найдите значениеSyntaxNode , помещенное в дерево, которое можно сделать, добавив выделенную заметку к этому узлу, а затем найдите его резервную копию в узле current, переданном обратному вызову вычислений.

Конструкторы

Имя Описание
SyntaxEditor(SyntaxNode, HostWorkspaceServices)

Создает новый экземпляр SyntaxEditor.

SyntaxEditor(SyntaxNode, SolutionServices)

Создает новый экземпляр SyntaxEditor.

SyntaxEditor(SyntaxNode, Workspace)
Устаревшие..

Создает новый экземпляр SyntaxEditor.

Свойства

Имя Описание
Generator

Используется SyntaxGenerator для создания и изменения SyntaxNode.

OriginalRoot

Значение, указанное SyntaxNode при построении SyntaxEditor .

Методы

Имя Описание
GetChangedRoot()

Возвращает измененный корневой узел.

InsertAfter(SyntaxNode, IEnumerable<SyntaxNode>)

Вставьте новые узлы после того, как указанный узел уже существует в дереве.

InsertAfter(SyntaxNode, SyntaxNode)

Вставьте новый узел после того, как указанный узел уже существует в дереве.

InsertBefore(SyntaxNode, IEnumerable<SyntaxNode>)

Вставьте новые узлы перед указанным узлом, уже существующим в дереве.

InsertBefore(SyntaxNode, SyntaxNode)

Вставьте новый узел перед указанным узлом, уже существующим в дереве.

RemoveNode(SyntaxNode, SyntaxRemoveOptions)

Удалите узел из дерева.

RemoveNode(SyntaxNode)

Удалите узел из дерева.

ReplaceNode(SyntaxNode, Func<SyntaxNode,SyntaxGenerator,SyntaxNode>)

Замените указанный узел узлом, созданным функцией.

ReplaceNode(SyntaxNode, SyntaxNode)

Замените указанный узел другим узлом.

TrackNode(SyntaxNode)

Убедитесь, что узел отслеживается, даже если он не изменен.

Методы расширения

Имя Описание
AddAttribute(SyntaxEditor, SyntaxNode, SyntaxNode)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
AddAttributeArgument(SyntaxEditor, SyntaxNode, SyntaxNode)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
AddBaseType(SyntaxEditor, SyntaxNode, SyntaxNode)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
AddInterfaceType(SyntaxEditor, SyntaxNode, SyntaxNode)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
AddMember(SyntaxEditor, SyntaxNode, SyntaxNode)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
AddParameter(SyntaxEditor, SyntaxNode, SyntaxNode)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
AddReturnAttribute(SyntaxEditor, SyntaxNode, SyntaxNode)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
InsertMembers(SyntaxEditor, SyntaxNode, Int32, IEnumerable<SyntaxNode>)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
InsertParameter(SyntaxEditor, SyntaxNode, Int32, SyntaxNode)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
SetAccessibility(SyntaxEditor, SyntaxNode, Accessibility)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
SetExpression(SyntaxEditor, SyntaxNode, SyntaxNode)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
SetGetAccessorStatements(SyntaxEditor, SyntaxNode, IEnumerable<SyntaxNode>)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
SetModifiers(SyntaxEditor, SyntaxNode, DeclarationModifiers)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
SetName(SyntaxEditor, SyntaxNode, String)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
SetSetAccessorStatements(SyntaxEditor, SyntaxNode, IEnumerable<SyntaxNode>)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
SetStatements(SyntaxEditor, SyntaxNode, IEnumerable<SyntaxNode>)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
SetType(SyntaxEditor, SyntaxNode, SyntaxNode)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
SetTypeConstraint(SyntaxEditor, SyntaxNode, String, SpecialTypeConstraintKind, IEnumerable<SyntaxNode>)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.
SetTypeParameters(SyntaxEditor, SyntaxNode, IEnumerable<String>)

Редактор для внесения изменений в дерево синтаксиса. Редактор работает, предоставляя список изменений для выполнения определенного дерева в порядке. Изменения будут SyntaxNode применяться к исходному дереву, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Исходный корневой каталог используется в качестве корневого элемента current для всех операций. Этот корневой каталог "current" постоянно обновляется, став новым корнем "current". Исходный корень никогда не изменяется.
  2. Каждое изменение имеет свое заданное SyntaxNode отслеживание, используя SyntaxAnnotation, создавая "текущий" корень, который отслеживает все из них. Это позволяет найти тот же узел после применения предыдущих изменений, которые мутируют дерево.
  3. Затем каждое изменение применяется в порядке его добавления в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в корневом каталоге current. Если этот узел не найден, операция завершится ошибкой ArgumentException.
  5. Конкретное изменение будет выполняться на этом узле, удалении, замене или вставке вокруг него в соответствии с изменением. Если изменение передается делегатом в качестве аргумента вычисления, он будет предоставлен SyntaxNode в текущем корне. Затем корневой каталог "current" будет обновлен, заменив текущий узел новым вычисляемым узлом.
  6. Затем возвращается корневой каталог current.

Применяется к