Class SymbolTreeComputer

java.lang.Object
com.github._1c_syntax.bsl.languageserver.context.computer.SymbolTreeComputer
All Implemented Interfaces:
Computer<SymbolTree>

public class SymbolTreeComputer extends Object implements Computer<SymbolTree>
Вычислитель дерева символов документа.

Создаёт иерархическую структуру символов документа (модуль, методы, регионы, переменные), правильно расставляя родительско-дочерние связи между символами. В дерево также передаются условия препроцессора для объявлений методов, собранные RegionVariableSymbolComputer в том же обходе, что переменные и регионы. Эти условия не удерживают AST и остаются доступны после выгрузки содержимого документа.

  • Constructor Details

  • Method Details

    • compute

      public SymbolTree compute()
      Description copied from interface: Computer
      Выполнить вычисление данных.
      Specified by:
      compute in interface Computer<SymbolTree>
      Returns:
      Вычисленные данные
    • isUpToDate

      public boolean isUpToDate(SymbolTree symbolTree)
      Годно ли для документа дерево, построенное по тому же его тексту.

      Кроме текста, дерево зависит от привязки документа к метаданным и от того, как классификаторы ответили на вопросы о его методах и голых присваиваниях, — а их ответы держатся на членах чужих модулей и типов. Дерево годно, если привязка та же и классификаторы отвечают то же самое. Голые присваивания переспрашиваются по переменным с неявным объявлением. Объявления циклов от классификатора реквизитов не зависят и в этой проверке не участвуют.

      Parameters:
      symbolTree - дерево, построенное по тому же тексту документа.
      Returns:
      true, если построение заново дало бы то же дерево.
    • empty

      public static SymbolTree empty(DocumentContext documentContext)
      Создает минимальное и пустое SymbolTree по контексту документа.

      Дерево содержит только ModuleSymbol с пустыми диапазонами.

      Parameters:
      documentContext - Контекст документа
      Returns:
      Пустое дерево символов.